$NOMOD51 ;Disable standard predefined 8051 register definitions. $INCLUDE(reg515.inc) ;Include the predefined 80C515/535 register definitions. ;Note that the file "reg515.inc" must reside somewhere ;in the parent directory where your assembly code files ;are stored. Name Display public display1 Display SEGMENT CODE EXTRN CODE (charout, lookup1, lookup2, lookup3, PWMlook01, PWMlook02, PWMlook03, PWMlook11, PWMlook12, PWMlook13, PWMlook21, PWMlook22, PWMlook23, PWMlook31, PWMlook32, PWMlook33) RSEG Display Display1: clr EAL ;DISPLAY1 is used to Display the PWM values when in state 0 ;push dph ;Save DPTR on stack to prevent ;push dpl ;corruption if it was already ;being used in the main program. mov p2,#20h ;LCD COMMAND loop0: movx A,@r1 jb acc.7,loop0 mov A,#04h ;Line 1, position 5 setb acc.7 ;must be 1 to read or write movx @r1,A mov p2,#20h loop1: movx A,@r1 jb acc.7,loop1 mov p2,#21h mov A,R3 ;temp value of Input mov dptr,#lookup2 ;output 100's movc a,@a+dptr add A,#30h lcall charout mov dptr,#lookup1 ;output 10's mov A,R3 movc a,@a+dptr add A,#30h lcall charout mov dptr,#lookup3 ;output 10's mov A,R3 movc a,@a+dptr add A,#30h lcall charout ;pop dpl ;Restore the DPTR to its value ;pop dph ;before the "keypad" subroutine ;was called. clr c mov A,#0FFh Subb A,CCH1 mov R5,A JNZ one mov A,#0FFh Subb A,CCL1 mov dptr,#PWMlook01 movc a,@a+dptr mov R3,A mov A,#0FFh Subb A,CCL1 mov dptr,#PWMlook02 movc a,@a+dptr mov R5,A mov A,#0FFh Subb A,CCL1 mov dptr,#PWMlook03 movc a,@a+dptr mov R4,A ljmp last one: DJNZ R5,Two mov A,#0FFh Subb A,CCL1 mov dptr,#PWMlook11 movc a,@a+dptr mov R3,A mov A,#0FFh Subb A,CCL1 mov dptr,#PWMlook12 movc a,@a+dptr mov R5,A mov A,#0FFh Subb A,CCL1 mov dptr,#PWMlook13 movc a,@a+dptr mov R4,A ljmp last Two: DJNZ R5,Three mov A,#0FFh Subb A,CCL1 mov dptr,#PWMlook21 movc a,@a+dptr mov R3,A mov A,#0FFh Subb A,CCL1 mov dptr,#PWMlook22 movc a,@a+dptr mov R5,A mov A,#0FFh Subb A,CCL1 mov dptr,#PWMlook23 movc a,@a+dptr mov R4,A ljmp last Three: mov A,#0FFh Subb A,CCL1 mov dptr,#PWMlook31 movc a,@a+dptr mov R3,A mov A,#0FFh Subb A,CCL1 mov dptr,#PWMlook32 movc a,@a+dptr mov R5,A mov A,#0FFh Subb A,CCL1 mov dptr,#PWMlook33 movc a,@a+dptr mov R4,A ljmp last last: mov p2,#20h ;LCD COMMAND loop2: movx A,@r1 jb acc.7,loop2 mov A,#44h ;Line 2, position 5 setb acc.7 ;must be 1 to read or write movx @r1,A mov p2,#20h loop3: movx A,@r1 jb acc.7,loop3 mov p2,#21h mov A,#30h lcall charout ;output 0 for 100's digit mov A,R4 ;temp value of Input add A,#30h lcall charout mov A,R5 add A,#30h lcall charout mov A,#0A1h lcall charout mov A,R3 add A,#30h lcall charout mov A,#25h lcall charout ;-------------Recording Or Not Display------ loop4: movx A,@r1 jb acc.7,loop4 mov A,#0Bh ;Line 1, position 12 setb acc.7 ;must be 1 to read or write movx @r1,A mov p2,#20h loop5: movx A,@r1 jb acc.7,loop5 mov p2,#21h mov A,7Fh jz notrec ;Recording on = 1+ mov A,#52h lcall charout mov A,#45h lcall charout mov A,#43h lcall charout ljmp rec notrec: mov A,#20h lcall charout mov A,#20h lcall charout mov A,#20h lcall charout rec: loop6: movx A,@r1 jb acc.7,loop6 mov A,#4Bh ;Line 2, position 12 setb acc.7 ;must be 1 to read or write movx @r1,A mov p2,#20h loop7: movx A,@r1 jb acc.7,loop7 mov p2,#21h mov A,72h jz notsnd ;Sending on = 1+ mov A,#53h lcall charout mov A,#45h lcall charout mov A,#4Eh lcall charout mov A,#44h lcall charout ljmp send notsnd: mov A,#20h lcall charout mov A,#20h lcall charout mov A,#20h lcall charout mov A,#20h lcall charout send: reti end