内容发布更新时间 : 2024/12/23 8:47:07星期一 下面是文章的全部内容请认真阅读。
mov a,r4 jz Key3 mov r4,#20h dec r2 sjmp Key4 Key3: mov r4,#0fh Key2: mov r2,04h mov r4,03h Key4: mov r1,#48h mov a,r2 mov @r1,a inc r1 mov a,r3 mov @r1,a mov a,r4 jb acc.5,Exit jb acc.4,Exit mov dptr,#KeyTable movc a,@a+dptr Exit: ret ScanKey: setb RS1 mov r2,#0feh mov r3,#08h mov r0,#00h
LoopS: mov r1,#Low(OUTBIT) mov a,r2 movx @r1,a rl a mov r2,a inc r1 movx a,@r1 cpl a anl a,#0fh
-28-
jnz Scan inc r0 djnz r3,LoopS ReTKey3:mov a,#20h TKey3: mov r2,a clr a
mov r1,#Low(OUTBIT) movx @r1,a mov a,r2 clr RS1 ret Scan:
cpl a
jb acc.0,TKey0 mov a,#00h sjmp EndLoop TKey0: jb acc.1,TKey1 mov a,#08h sjmp EndLoop TKey1: jb acc.2,TKey2 mov a,#10h sjmp EndLoop TKey2: jb acc.3,ReTKey3 mov a,#18h EndLoop:add a,r0 sjmp TKey3
LedMap: ;八段管显示码 db 0c0h,0f9h,0a4h,0b0h,099h,092h,082h,0f8h db 080h,090h,088h,083h,0c6h,0a1h,086h,08eh KeyTable: ;键码定义 db 07h,04h,08h,05h,09h,06h,0ah,0bh db 01h,00h,02h,0fh,03h,0eh,0ch,0dh end
-29-
硬 件 实 验
硬件实验部分可使学生能进一步掌握单片机系统扩展和输入输出程序的设计方法,熟悉对扩展系统的软件、硬件设计,调试方法和技巧。
实验一 P1口亮灯实验
一、实验目的
(1)学习P1口的使用方法; (2)学习延时子程序的编写。
二、实验内容
P1口作为输出口,接八个发光二极管,编写程序,使发光二极管循环点亮。
三、程序框图
四、实验电路
五、实验过程
连接电路,编写程序,然后观察LED灯的显示情况。
此程序运用定时器中断实现计数定时功能。使用中断时,需设置中断控制字TMOD,
-30-
使定时器1工作于中断方式,然后设置延时子程序初值即TH1和TL1,利用ACALL语句即可申请中断。运行程序时,调用延时子程序,开启计数器,计数器满时发出中断返回中断处,等待下次开始,从而实现循环定时计数功能。
六、实验结果及分析
实验中LED灯管闪亮并维持一定时间,按循环左移方式点亮。
问题回答:若要增加LED灯闪亮时间,可以使延时子程序中计数器计数周期增长,即初值TL1、TH1值减小即可。改变亮灯方向,只需将RL A变为RR A即可。
七、实验源程序
ORG 0000H AJMP MAIN ORG 0790H MAIN: MOV R0, #08H MOV A, #0FEH LOOP: MOV P1, A ACALL DELAY RL A
DJNZ R0, LOOP JMP MAIN
DELAY: MOV TMOD, #10H MOV TL1, #0C0H MOV TH1, #63H SETB TR1 JNB TF1, $ CLR TF1 RET END
实验三 P3.3口输入 P1口输出
一、实验目的
1.掌握P3口、P1口简单使用。
2.学习延时程序的编写和使用。
二、实验内容
-31-