完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
ORG 00H
MOV R3, #0 JMP START ORG 13H JMP KEY ORG 23H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; START: CORD_H EQU 30H CORD_L EQU 31H CORD_HL EQU 32H CORD_B EQU R3 MOV IE, #84H ;使能外部中断1 MOV R0, #3FH MOV R1, #00H MAIN: CJNE CORD_B, #1H, C1 JMP C2 C1: CALL initial_condition JMP MAIN C2: MOV R1, #0EFH CALL KEY CALL DISPLAY JMP MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; initial_condition: MOV DPTR, #LABTE0 I1: CLR A MOVC A,@A+DPTR CJNE A,#88H, I2 RET I2: MOV R0, A CALL DISPLAY CALL DELAY INC DPTR JMP I1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DISPLAY: /*显示按键对应信息*/ WEI_LATCH: MOV P0, R1 SETB P2.3 CLR P2.3 DUAN_LATCH: MOV P0, R0 SETB P2.2 CLR P2.2 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; KEY: MOV P1, #0F0H MOV A, P1 ANL A, #0F0H CJNE A,#0F0H,KEEPKEY /*不相等说明有按键按下,*/ RET KEEPKEY: CALL FILTER MOV P1, #0F0H MOV A, P1 ANL A, #0F0H MOV CORD_H, A MOV P1, #0FH MOV A, P1 ANL A, #0FH ORL A, CORD_H MOV CORD_HL, A SETKEY: /*判断按下按键是哪个对应的数字或字母*/ MOV DPTR, #LABTE1 MOV R2, #00H S1: MOV A, R2 MOVC A, @A+DPTR CJNE A, CORD_HL, S2 /*CORD_HL能否用B代替?*/ /*将按键获得的代码,与表1中的代码对比,不相等跳入S2*/ MOV 33H, R2 JMP S3 /*相等跳入S3去值*/ S2: /*不相等时DPTR向下移1为,并计数*/ INC R2 CJNE A,#88H,S1 RET S3: /*载入按键对应的值*/ MOV DPTR, #LABTE2 MOV A, R2 MOVC A,@A+DPTR MOV R0, A RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; TIM0: /*中断子程序*/ MOV CORD_B, #1 POP DPL POP DPH MOV DPTR, #0023H /*返回从新的地址开始(START)*/ PUSH DPL PUSH DPH RETI ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; FILTER: /*防抖动延迟*/ MOV R4, #60 E1: MOV R5, #248 DJNZ R5, $ DJNZ R4, E1 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DELAY: /*流水效果延迟*/ MOV R4, #5 D1: MOV R5, #60 D2: MOV R6, 248 DJNZ R6,$ DJNZ R5,D2 DJNZ R4,D1 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LABTE1: ;按键扫描码 DB 7EH, 0BEH, 0DEH, 0EEH DB 7DH, 0BDH, 0DDH, 0EDH DB 7BH, 0BBH, 0DBH, 0EBH DB 77H, 0B7H, 0D7H, 0E7H DB 88H LABTE2: ;扫描后显示对应的数字和字母(段选) DB 3FH, 06H, 5BH, 4FH DB 66H, 6DH, 7DH, 07H DB 7FH, 6FH, 77H, 7CH DB 58H, 5EH, 79H, 71H DB 88H LABTE0: ;数码管流水效果 DB 01H, 02H, 04H, 08H, 10H, 20H DB 88H END ———————————————————————————————— 为什么initial_condition,KEY,DISPLAY子程序都正常,就是不能复位开始数码管流水效果时,按下按键产生中断????
|
|
相关推荐
8个回答
|
|
这是开始是8位数码管产生流水效果,直到按键中断型号产生后,44矩阵按键按下对应的0到F的键后显示出来的汇编程序。
|
|
|
|
|
|
|
|
你是不是中断没有开完,外部中断涉及到两个寄存器,TCON和IE,外部中断应该要开EA,EX1,IT1吧。。。。
|
|
|
|
我开了MOV IE, #84H ;使能外部中断1 IT1复位不是0电平使用低电平触发吗?难道这个要用边沿触发才行? |
|
|
|
电平触发方式是按照电平的高或者低来触发,所以用的时候,必须在发生触发事件后立即将电平拉到非触发电平上,如果不这样做的话,会导致程序一直在触发事件程序入口处,而不会执行其他地方的程序 |
|
|
|
你做的是不是相当于这个,按下按键显示按键上的数。。。 |
|
|
|
恩,差不多,我已经解决了,是在中断触发前我没把矩阵接口低位置低电平。我又改成边沿触发,效果达成了 |
|
|
|
{:20:}{:20:}{:20:}{:20:}
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
460 浏览 0 评论
【敏矽微ME32G070开发板免费体验】+ADC测试与LED点亮
418 浏览 0 评论
飞凌嵌入式-ELFBOARD ELF 2的硬件知识分享--核心板
352 浏览 0 评论
【敏矽微ME32G070开发板免费体验】\\+Lora通信终端产品开发项目
514 浏览 0 评论
1576 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11971 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 02:32 , Processed in 0.836626 second(s), Total 90, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号