第3节 系统的软件设计
本系统的软件系统主要可分为主程序、串口收发程序,读取键盘子程序,显示字符子程序四大模块。
3.1 系统主程序设计
图5 系统主程序流程图
 
图6  INIT8279子程序框图
主要程序
 Z8279 EQU 8701H       ;8279 状态/命令口地址 
 D8279 EQU 8700H       ;8279 数据口地址 
 LEDMOD EQU 00H        ;左边输入 八位字符显示 
                       ;外部译码键扫描方式,双键互锁 
 LEDFEQ EQU 2FH        ;扫描速率 
 LEDCLS EQU 0C1H       ;清除显示 RAM 
 LEDWR0 EQU 80H        ;设定的将要写入的显示RAM地址 
 READKB EQU 40H        ;读 FIFO RAM 地址 0 的命令字 
 ORG 0000H 
 AJMP START 
 ORG 0040H 
 
 START: 
 MOV SP,#60H 
 LCALL INIT8279        ;初始化8279 
 MOV SCON,#50H         ;串口 方式 1 
 MOV TMOD,#20H         ;T1 方式 1 
 MOV TL1,#0FDH         ;波特率 9600 的常数 
 MOV TH1,#0FDH 
 SETB TR1              ;开中断 
 SETB ET1 
 SETB EA
  
 WAIT: 
 JBC RI,DIS_REC        ;是否接收到数据 
 LCALL GETKEY          ;读键盘 
 CJNE A,#0FFH,WAIT     ;是否有键输入 
 MOV SBUF,B            ;串口输出键盘输入的值 
 NOP 
 SS: JBC TI,WAIT       ;是否发送完毕 
 SJMP SS 
 
 DIS_REC: 
 MOV A,SBUF            ;读串口接收到的数据 
 CLR C 
 SUBB A,#30H           ;以下判定输入是否在0-F 
 JC ERROR 
 SUBB A,#0AH 
 JNC DIS_REC1 
 ADD A,#0AH 
 SJMP DIS_REC2 
 DIS_REC1: 
 SUBB A,#7H 
 JC ERROR 
 SUBB A,#6H 
 JNC ERROR 
 ADD A,#10H 
 DIS_REC2: 
 MOV R4,#00H 
 MOV R5,A 
 LCALL DISLED          ;显示输入的数字(0-F) 
 ERROR: AJMP WAIT 
 
 INIT8279:             ;8279初始化子程序 
 PUSH DPH              ;保存现场 
 PUSH DPL 
 PUSH ACC 
 LCALL DELAY           ;延时 
 MOV DPTR ,#Z8279 
 MOV A,#LEDMOD &


