7.2功用阐明
用一位数码管循环显现0~9数字,数字改换距离的时刻为1秒。
程序:SMG2.ASM
01: START: MOV DPTR, #TABLE ; 存表
02: MOV R0, #0 ; 设定初始值
03: LOOP : MOV A, R0
04: MOVC A, @A+DPTR ; 取表代码
05: MOV P0, A ; 送P0输出
06: ACALL DLY1S ; 调延时程序 存表取表
07: INC R0 ; R0值加1
08: CJNE R0, #10 , LOOP ; 不是10,循环
09: JMP START ; 重新开端 判别循环
10: DLY1S: MOV R5, #50 ;
11: D1: MOV R6, #100 ;
12: D2: MOV R7, #100 ;
13: DJNZ R7, $ ;
14: DJNZ R6, D2 ;
15: DJNZ R5, D1 ; 1秒延时
16: RET ; 子程序
17: TABLE: DB 0C0H, 0F9H, 0A4H, 0B0H ;
18: DB 99H, 92H, 82H, 0F8H ;
19: DB 80H, 90H, 88H, 83H ;
20: DB 0C6H, 0A1H, 86H, 8EH ; 代码表
21: END ; 程序完毕
7.3功用阐明
运用两位数码管显现器,使用扫描方法循环显现00~99两位数。
程序:SMG3.ASM
01: START: MOV R0, #0 ;初始化计数器
02: MOV DPTR, #TABLE ;存入查表启始地址
03: LOOP: ACALL DISPLAY ; 调显现子程序
04: INC R0 ; 计数器加1
05: CJNE R0 ,#100, LOOP ; 没到100 循环
06: JMP START ; 到开端处 主程序
07: DISPLAY::MOV A, R0 ;
08: MOV B, #10 ; 16进制换成10进制
09: DIV AB ; A÷B商存A,余数存B
10: MOV R1, A ; R1内寄存十位数 换
11: MOV R2, B ; R2内寄存个位数 十进
12: MOV R3, #50 ; 设导通频率50次
13: LOOP1: MOV A, R2 ; 个位数显现
14: ACALL CHANG ; 调显现子程序
15: CLR P2.0 ;开个位显现
16: ACALL DLY10mS ; 调延时10ms程序 个位
17: SETB P2.0 ; 封闭个位显现 显现
18: MOV A, R1 ; 取十位数
19: ACALL CHANG ; 调取表显现子程序
20: CLR P2.1 ; 开十位显现
21: ACALL DLY10mS ; 调延时10ms程序 十位
22: SETB P2.1 ; 封闭十位显现 显现
23: DJNZ R3, LOOP1 ; 100次没完,持续循环 扫描
24: RET ; 子程序
25: CHANG: MOVC A, @A+DPTR ;
26: MOV P0, A ;
27: RET ; 取表子程序
28: DLY10mS:MOV R6, #20 ;
29: D1: MOV R7, #248 ;
30: DJNZ R7, $ ;
31: DJNZ R6, D1 ; 延时10 m.S
32: RET ; 子程序
33: TABLE: DB 0C0H, 0F9H, 0A4H, 0B0H ;
34: DB 99H, 92H, 82H, 0F8H ;
35: DB 80H, 90H, 88H, 83H ;
36: DB 0C6H, 0A1H, 86H, 8EH ; 代码表
37: END ; 程序完毕
键盘操控
8.1功用阐明:
用八位指拨开关(DIP)作单片机的输入,操控输出端口衔接的八只LED发光二极管。如若DIP1开关为 ON(向右拨动)则LED1亮,其它开关效果相同。
程序:SR01.ASM
01: LOOP: MOV A, P3 ; 从P3读入DIP开关值
02: MOV P1, A ; 从P1输出
03: JMP LOOP ; 无量循环
04: END ; 程序完毕
8.2功用阐明:
用DIP开关中的低4位作二进制的输入,操控输出端数码管显现器的输出。
程序:SR02.ASM
01: MOV DPTR,#TABLE ; 存表
02: MOV P0, #0FFH ; LED全灭
03: LOOP: MOV A, P3 ; 从P3口读入DIP开关值
04: ANL A, #0FH ; 高4位清0,取低四位
05: ACALL CHANG ; 转成七段显现码
06: MOV P0, A ; 从P0输出
07: JMP LOOP ; 搬运LOOP处,循环
08: CHANG: MOVC A,@A+DPTR ; 取码
09: RET ; 回来 转化显现码子程序
10: TABLE: DB 0C0H, 0F9H, 0A4H, 0B0H ;
11: DB 99H, 92H, 82H, 0F8H ;
12: DB 80H, 90H, 88H, 83H ;
13: DB 0C6H, 0A1H, 86H, 8EH ; 显现码表
14: END ; 程序完毕
8.3功用阐明:
用两个按键开关K1和K2作输入,K1为电源指示灯开关,K2为作业指示灯开关。别离操控电源指示灯(P1.0接的LED)和作业指示灯(P1.7接的LED)的接通和封闭。接通电源时,电源指示灯是在亮的状况。
当按K2时,作业指示灯亮,电源指示灯灭。按K1时,电源指示灯亮,作业指示灯灭。
程序:SR03.ASM
01: START: MOV P1, #11111110B ; P1.0所接LED亮
02: JB P2.5 , $ ; 判别P2.5(K2键)是否为1
03: ON: MOV P1, #01111111B ; P1.7所接LED亮
04: JNB P2.4, START ; 判别P2.4(K1键)是是否为0
05: JMP ON ; 未按K1键,则跳至ON
06: END ; 程序完毕
8.4功用阐明:
由四个按键开关组成独立式键盘,操控灯左移、右移和闪耀。
程序:JP01.ASM
01: START: MOV P1,#0FFH ;设置输出口初值
02: MOV A,#0FFH ;设置输入方法
03: MOV P2,A ;
04: LOOP: MOV A,P2 ;读入键盘状况
05: CJNE A,#0FFH,LP0 ;有键按下否
06: JMP LOOP ;无键按下等候
07: LP0: ACALL DELAY1 ;调延时去颤动
08: MOV A,P2 ;重读入键盘状况
09: CJNE A,#0FFH,LP1 ;非误读则转
10: JMP LOOP ; 按键查询
11: LP1: JNB P2.4, A1 ;K1键按下转A1
12: JNB P2.5, A2 ;K2键按下转A2
13: JNB P2.6, A4 ;K3键按下转A3
14: JNB P2.7, A4 ;K4键按下转A4 键按下后转
15: JMP START ;无键按下回来 功用处理程序
16: A1: MOV R0, #8 ;设置左移位数
17: MOV A ,#0FEH ;设置左移初值
18: LOOP2: MOV P1, A ;输出至P1
19: ACALL DELAY ;调延时1秒子程序
20: RL A ;左移一位
21: DJNZ R0, LOOP2 ;判别移动位数 1号功用键
22: JMP START ;回来主程序开端处 处理程序
23: A2: MOV R0,#8 ;设置右移位数
24: MOV A ,#0FCH ;设置右移初值
25: LOOP3: RR A ;右移一位
26: MOV P1, A ;输出至P1
27: ACALL DELAY ;调延时1秒子程序
28: DJNZ R0, LOOP3 ;判别移动位数 2号功用键
29: JMP START ;回来主程序开端处 处理程序
30: A3: MOV R0,#6 ;设置闪耀次数
31: MOV A ,#0F0H ;设置初值
32: LOOP4: MOV P1, A ;输出至P1
33: ACALL DELAY ;调延时1秒子程序
34: CPL A ;反相
35: MOV P1,A ;输出
36: DJNZ R0, LOOP4 ;判别移动位数 3号功用键
37: JMP START ;回来主程序开端处 处理程序
38: A4: MOV R0,#10 ;设置闪耀次数
39: MOV A, #00H ;设置初值
40: LOOP5: MOV P1,A ;输出
41: ACALL DELAY ;调延时子程序
42: CPL A ;反相
43: MOV P1,A ;输出
44: DJNZ R0, LOOP5 ;判别闪耀次数 4号功用键
45: MP START ;回来主程序开端处 处理程序
46: DELAY1: MOV R3, #60 ;消抖延时子程序
47: D2: MOV R4, #248 ;
48: DJNZ R4, $ ;
49: DJNZ R3, D2 ; 消除颤动
50: RET ; 延时子程序
51: DELAY: MOV R5, #50 ;延时1秒子程序
52: DLY1: MOV R6, #100 ;
53: DLY2: MOV R7, #100 ;
54: DJNZ R7, $ ;
55: DJNZ R6, DLY2 ;
56: DJNZ R5, DLY1 ;
57: RET ; 延时子程序
58: END ; 程序完毕
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/chuanganqi/260644.html