RS BIT P3.2 RW BIT P3.1 E BIT P3.0 DB0_DB7 DATA P2 ;********程序開始******** ORG 00H AJMP START ORG 000BH AJMP INSE ORG 50H ;********主程序函數********** START:MOV TMOD,#0 MOV TL0,#0 MOV TH0,#0 SETB EA SETB ET0 SETB TR0 MOV R5,#50 MOV SP,#60H ACALL INIT MOV A,#0C3H ;;;寫入指令 ACALL C51 ;;; MOV A,#42H ;;;寫入數據 ACALL C51DDR ;;; LOOP: AJMP LOOP ;*********中斷服務程序********** INSE: MOV TL0,#0 MOV TH0,#0 DJNZ R5,NO MOV R5,#50 NO:RETI ;*********LCD初始設置程序******** INIT: MOV A,#38H LCALL C51 MOV A,#0EH LCALL C51 MOV A,#06H LCALL C51 RET ;*********檢查忙碌子程序********* DDW: PUSH ACC DDW1:CLR RS SETB RW CLR E SETB E MOV A,DB0_DB7 CLR E JB ACC.7,DDW1 POP ACC ACALL DELAY RET ;********寫入指令到LCD寄存器子程序**** C51:ACALL DDW CLR E CLR RS CLR RW SETB E MOV DB0_DB7,ACC CLR E RET ;*******寫入數據到LCD寄存器子程序***** C51DDR:ACALL DDW CLR E SETB RS CLR RW SETB E MOV DB0_DB7,ACC CLR E RET ;*********延時子程序********* DELAY:MOV R6,#5 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET END |