程序框圖

Z8279 EQU 08701H ;8279 狀態(tài)/命令口地址 D8279 EQU 08700H ;8279 數(shù)據(jù)口地址 LEDMOD EQU 00H ;左邊輸入 八位字符顯示 ;外部譯碼鍵掃描方式,雙鍵互鎖 LEDFEQ EQU 2FH ;掃描速率 LEDCLS EQU 0C1H ;清除顯示 RAM LEDWR0 EQU 80H ;設(shè)定的將要寫(xiě)入的顯示RAM地址 ORG 0000H AJMP START ORG 001BH ;INT T1 入口地址 AJMP INT_T1 ORG 0040H START: MOV SP,#60H LCALL INIT8279 ;初始化8279 MOV R3,#0H ;時(shí) MOV R2,#0H ;分 MOV R1,#0H ;秒 MOV R6,#0H ;標(biāo)志 MOV TMOD,#10H MOV TL1,#00H ;50 mS 的時(shí)間常數(shù) MOV TH1,#04CH MOV R0,#20 SETB TR1 SETB ET1 SETB EA ;允許中斷 WAIT: CJNE R6,#0FFH,WAIT LCALL DISPLAY MOV R6,#0 SJMP WAIT INIT8279: ;8279初始化子程序 PUSH DPH ;保存現(xiàn)場(chǎng) PUSH DPL PUSH ACC LCALL DELAY ;延時(shí) MOV DPTR ,#Z8279 MOV A,#LEDMOD ;置8279工作方式 MOVX @DPTR,A MOV A,#LEDFEQ ;置鍵盤(pán)掃描速率 MOVX @DPTR,A MOV A,#LEDCLS ;清除 LED 顯示 MOVX @DPTR,A LCALL DELAY ;延時(shí) POP ACC ;恢復(fù)現(xiàn)場(chǎng) POP DPL POP DPH RET ;顯示字符子程序 ;輸入: R4,位置 R5,值 DISLED: PUSH DPH ;保存現(xiàn)場(chǎng) PUSH DPL PUSH ACC MOV A,#LEDWR0 ;置顯示起始地址 ADD A,R4 ;加位置偏移量 MOV DPTR,#Z8279 MOVX @DPTR,A ;設(shè)定顯示位置 MOV DPTR,#LEDSEG ;置顯示常數(shù)表起始位置 MOV A,R5 MOVC A,@A+DPTR ;查表 MOV DPTR,#D8279 MOVX @DPTR,A ;顯示數(shù)據(jù) POP ACC ;恢復(fù)現(xiàn)場(chǎng) POP DPL POP DPH RET DELAY: ;延時(shí)子程序 PUSH 0 ;保存現(xiàn)場(chǎng) PUSH 1 MOV 0,#0H DELAY1: MOV 1,#0H DJNZ 1,$ &n
|