完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本人在学习汇编语言,按照书本上写的复制过来,编译成功,为什么数码管无反映,蜂鸣器不响?数码管位选为P2口,段选为P0口,蜂鸣器为P3.7口,红外为P3.2口,为什么没有反映,是否这个书本上没有用外面中断造成无效?
ORG 000HMAIN: MOV SP,#60H MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH JNB P3.2,$ MOV R6,#10 K1: ACALL YS1 JB P3.2,MAIN DJNZ R6,K1 JNB P3.2,$ ACALL YS2 MOV R1,1AH MOV R2,#4 PP: MOV R3,#8 JJ: JNB P3.2,$ LCALL YS1 MOV C,P3.2 JNC UU JB P3.2,$ UU: MOV A,@R1 RRC A MOV @R1,A DJNZ R3,JJ INC R1 DJNZ R2,PP MOV A,1AH XRL A,#0 JNZ MAIN MOV A,1BH XRL A,#0FFH JNZ MAIN MOV A,1CH CPL A XRL A,1DH JNZ MAIN LCALL SEND MOV A,1AH CPL A MOV P1,A JZPD: MOV A,1AH IRD0: CJNE A,#00H,IRD1 MOV P0,#0C0H MOV P2,#00011111B AJMP MAIN IRD1: CJNE A,#01H,IRD2 MOV P0,#0F9H MOV P2,#00011111B AJMP MAIN IRD2: CJNE A,#02H,IRD3 MOV P0,#0A4H MOV P2,#00011111B AJMP MAIN IRD3: CJNE A,#03H,IRD4 MOV P0,#0B0H MOV P2,#00011111B AJMP MAIN IRD4: CJNE A,#04H,IRD5 MOV P0,#099H MOV P2,#00011111B AJMP MAIN IRD5: CJNE A,#05H,IRD6 MOV P0,#092H MOV P2,#00011111B AJMP MAIN IRD6: CJNE A,#06H,IRD7 MOV P0,#082H MOV P2,#00011111B AJMP MAIN IRD7: CJNE A,#07H,IRD8 MOV P0,#0F8H MOV P2,#00011111B AJMP MAIN IRD8: CJNE A,#08H,IRD9 MOV P0,#080H MOV P2,#00011111B AJMP MAIN IRD9: CJNE A,#09H,IRDOR MOV P0,#090H MOV P2,#00011111B AJMP MAIN IRDOR: MOV P2,#0FFH AJMP MAIN YS1: MOV R4,#19 D1: MOV R5,#18 DJNZ R5,$ DJNZ R4,D1 RET YS2: MOV R4,#10 D2: MOV R5,#216 DJNZ R5,$ DJNZ R4,D2 RET SEND: MOV R7,255 SDL1: CPL P3.7 MOV R6,#0FFH SDL0: DJNZ R6,SDL0 DJNZ R7,SDL1 RET END |
|
相关推荐
3个回答
|
|
楼主最好在程序后面加些注释
|
|
|
|
为什么还学汇编而不学C呢,现在学汇编没什么优势。
有几个问题, 1,蜂鸣器如果时有源蜂鸣器的话,只需要置高或低电平(具体根据电路来定)就可以了,不需要以脉冲来驱动,否则一般不会响的。 2,程序结构太乱,不同的功能程序应该写成子程序。 3,初始化部分在上电复位以后执行一次就够了,不需要经常执行。 4,红外接收最好时使用中断方式。 5,汇编写程序开头需要跳开各个中断入口部分的地址。 6,数码管一般都是扫描驱动方式,你的程序里看不到这部分。 7,最好找一个好一些的汇编例程看看,例程要有中断功能,子程序的模块化,数码管的显示,定时器等等。 |
|
|
|
重新找了一个例子,已找到问题是开始的延时时间过长了,
MOV R6,#5,R6给的值是10,这个延时过长造成无法开始判断882微秒延时 学习汇编是公司的工程师他是汇编做项目,这样可以跟他学到知识,同时他的代码我可以做小的改动。 ORG 0000H。 AJMP MAIN ORG 0003H ;外部中断P3.2脚INT0入口地址 AJMP INTT0 ;转入外部中断服务子程序(解码程序) ORG 0100H MAIN: SETB EA SETB IT0 SETB EX0 AJMP $ ;******************以下为进入P3.2脚外部中断子程序,也就是解码程序******************* INTT0: CLR EA ;暂时关闭CPU的所有中断请求 MOV R6,#5 SB: ACALL YS1 ;调用882微秒延时子程序 JB P3.2,EXIT ;延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序 DJNZ R6, SB ;重复 5 次,目的是检测在 4410 微秒内如果出现高电平就退出解码程序 ;---------------以上完成对遥控信号引导码的 4500 微秒的初始低电平信号的识别!!!!! JNB P3.2, $ ;等待高电平避开 4.5 毫秒低电平引导脉冲 ACALL YS2 ;延时4.74毫秒避开 4.5 毫秒的结果码 ;---------------以上是对引导码的 4500 微秒高电平的初始识别!!!!! ;------------------------------------------------------------------------- MOV R7,#16 ;忽略前16位系统识别码 (即地址码) JJJJA:JNB P3.2,$ ;等待地址码第一位的高电平信号 LCALL YS1 ;高电平开始后用882微秒的时间延时去判断信号此时的高低电平状态 MOV C,P3.2 ;将P3.2引脚此时的电平状态 0或1 存入C中 JNC UUUA ;如果为0就跳转到UUUA LCALL YS3 ;检测到高电平1的话延时1毫秒等待脉冲高电平结束 UUUA: DJNZ R7,JJJJA ;-------------------------------------------------------------------------- MOV R1,#1AH ;设定1AH为起始RAM区 MOV R2,#2 ;接收从1AH到1BH的2个内存,用于存放操作码 (即数据码) 和操作反码 PP: MOV R3,#8 ;每组数据为8位 JJJJ: JNB P3.2,$ ;等待 数据码 第一位的高电平信号 LCALL YS1 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态 MOV C,P3.2 ;将P3.2引脚此时的电平状态0或1存入C中 JNC UUU ;如果为0就跳转到UUU LCALL YS3 ;检测到高电平1的话延时1毫秒等待脉冲高电平结束 UUU: MOV A,@R1 ;将R1中地址的给A RRC A ;将C中的值0或1移入A中的最低位 MOV @R1,A ;将A中的数暂时存放在R1数值的内存中 DJNZ R3,JJJJ ;接收满8位换一个内存 INC R1 ;对R1中的值加1,换下一个RAM DJNZ R2,PP ;接收完8位数据码和8位数据反码,存放在1AH/1BH中 MOV A,1AH CPL A ;对1AH取反后和1BH比较 CJNE A,1BH,EXIT ;如果不等表示接收数据发生错误,放弃 ;--------------------------------------------------------------------- MOV P2,#00000000B MOV P0,1AH ;将按键的键值通过P1口的8个LED显示出来! CPL P3.7 ;蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功 LCALL YS4 EXIT: SETB EA ;允许中断 RETI ;退出解码子程序 ;-------------------------延时子程序--------------------------------- YS1: MOV R4,#20 ;延时子程序1,精确延时882微秒 D1: MOV R5,#20 DJNZ R5,$ DJNZ R4,D1 RET YS2: MOV R4,#10 ;延时子程序2,精确延时4740微秒 D2: MOV R5,#235 DJNZ R5,$ DJNZ R4,D2 RET YS3: MOV R4,#2;延时程序3,精确延时1000微秒 D3:MOV R5,#248 DJNZ R5,$ DJNZ R4,D3 RET YS4: MOV R7,#10 D4:MOV R6,#20 D5:MOV R5,#50 DJNZ R5,$ DJNZ R6,D5 DJNZ R7,D4 RET END |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
Openharmony软件评估指南-米尔瑞芯微RK3568开发板
611 浏览 0 评论
STM32CUBEMX(7)--移植雅特力AT32F403AVGT(兼容STM32F103VGT6),DAC输出电压
1047 浏览 0 评论
【RA-Eco-RA0E1-32PIN-V1.0开发板试用】开发板简介与上电测试
970 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之传参
538 浏览 0 评论
【xG24 Matter开发套件试用体验】点灯之后的UART测试
668 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11044 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-10 16:07 , Processed in 0.913856 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号