E N D
(3).显示程序: 采用下载数据但不译码方式,其字形表 由用户根据需要和硬件连线来确定,指 令码为90H~97H.显缓区为40H~47H。 DTR: MOV R5,#08H MOV R0,#40H MOV R1,#97H LP1: CLR P1.0 MOV R6,#0CH LP2: DJNZ R6,LP2 MOV A,R1 ACALL STFS MOV R6,#04H
LP3: DJNZ R6,LP3 MOV A,@R0 ADD A,#0DH MOVC A,@A+PC ACALL STFS MOV R6,#02H LP4: DJNZ R6,LP4 SETB P1.0 INC R0 DEC R1 DJNZ R5,LP1 RET TAB DB 7EH,30H,6DH,79H,33H,5BH,5FH,70H,7FH,7BH, DB 77H,1FH,4EH,3DH,4FH,47H,00H,67H
(4)读键值子程序:所读的键值保存在A中,其值与按键 在键盘中位置及硬件连线有关。KEY1: CLR P1.0 MOV R6,#0CH LP1: DJNZ R6,LP1 MOV A,#15H ACALL STFS MOV R6,#06H LP2: DJNZ R6,LP2 ACALL STJS SETB P1.0 RET
(5). 读键值三种方式:a.中断方式:将KEY连到INT引脚上,在中断程序中,用 KEY1子程序读取键值。b.查询方式:软件查询KEY脚电平,当为低电平时读取 值。采用这种方式要求主循环程序时间应 小于100ms,为保证按一次键只得到一个键 值,在软件中应建立一个标志.设00H为标志位. A保存按键值,当A=FFH时,表示无键按下. ST: SETB P1.3 SETB 00H MOV C,P1.3 RET JC LP2 LP2: CLR 00H JB 00H,LP1 LP1: MOV A,#FFH LCALL KEY1 RET
c. 直读方式:在主程序循环中,安排一个读键值子程 序。当读到的值为FFH为无键按下,当读到 的值不为FFH时,表示有键按下,其值为键 值。采用这种方式要求主循环程序时间应 小于100ms,为了解决在按一次键时可读到 多个同样的值的问题,在软件中应建立一 个标志.设00H为标志位. A保存按键值,当A=FFH时,表示无键按下. ST: ACALL KEY1 SETB 00H CJNE A,#0FFH,LP1 RET CLR 00H LP2: MOV A, #FFH RET RET LP1: JB 00H,LP2
(6): 求键号(设按键值存A,求得键号也存A)MOV B, A MOV R2,#00H MOV R7,#0FH (16个键) LP1:MOV A,R2 ADD A,#0AH MOVC A,@A+PC CJNE A,B,LP2 SJMP LP3 LP2:INC R2 DJNZ R7,LP1 LP3:MOV A,R2 RET TAB: DB XXH,XXH,┈ (键值表)
(7):7279初始化(复位) ST:CLR P1.0 MOV R6, #0CH LP0:DJNZ R6, LP0 MOV A,#A4H ACALL STFS MOV R6, #02H LP1:DJNZ R6, LP1 SETB P1.0 RET 附:单片机应用系统的软件结构: 通常单片机应用系统的系统软件由主程序和若干 中断服务程序构成。根据系统各操作的性质,指定 哪些操作由中断服务程序完成,哪些操作由主程序 完成,并指定各中断的优先级。
1.主程序结构 入口:0000H 设置栈底,置P口初值,I/O口初始化及有关输出 定时器、串口初始化,设置中断有关参数 置“0”工作单元及标志,设置显示初值 按标志不同,将不同参数送至显缓区 显示处理 显示(更新显示控制) 键 扫 N 有键按下否? Y 键处理(数字键、命令键) 报警处理及其它
2.中断服务程序结构 入口 保护现场(A、B、DPH、DPL、PSW等) 选另一工作寄存器区 关定时计数,置定时初值,开定时计数 中断次数计数,建立标志 (控制)/如:显控等 采样 (传送、滤波) 计算差值,计算输出参数(按控制算法计算) 计算输入/输出的显示值 参数输出 恢复现场 中断返回