我不懂汇编,懂一点c,也不太懂单片机,现在做一个抢答器...

如题所述

我不懂汇编,懂一点c,也不太懂单片机,现在做一个抢答器...
是用C来写吧,缺少对抢答器功能方面的描述,不知道程序要实现哪些功能。
读了下这段汇编程序,觉得有个地方写法似乎不太妥当,大家讨论一下:

LOOP:
MOV P1,A
SJMP LOOP
RET
显示子程序中这个地方为无条件跳转,也就是说,按键后显示值无法刷新,除非有系统中断或复位。我觉得编程本意还是送显后接着执行其他指令,否则这段下面的返回指令RET也就意义不明显了。
注释了一下程序,不知对不对
ORG 0000H;
MOV P1,#7FH ; 初始化P1口输出逻辑为0111 1111
MAIN:
MOV P3,#3CH ; P3 0011 1100
MOV A,P3 ;读入P3.5 P3.4 P3.3 P3.2的电平逻辑
ANL A,#3CH; ;取上述四位
CJNE A,#3EH,START ; 如果A不等于0011 1110 (P3.1有正电平跳变)跳转至START
SJMP MIAN ; 构造主程序超级循环,到这里主程序结束,一直重复上述过程

START:;如果P3.1 有0--》1的电平跳变,则开始键扫?

MOV A,P3 ;读入P3口信息,给ACC
ANL A,#3CH ;取中间四位(P3.5 P3.4 P3.3 P3.2)
CJNE A,#3CH,KEY1234 ; 如果有输入,转去扫描键1234
MOV A,#3DH ;(ACC)=0011 1101
MOV P3,A ;P3 =ACC =0011 1101
MOV A,P3 ;读入 (P3.5 P3.4 P3.3 P3.2 和P3.0)的状态
ANL A,#3CH ; 取中间四位 这里不太明白,感觉 #3CH应该为#3DH
CJNE A,#3CH,KEY5678 ; 若有输入,则转key5678,

KEY1234:
MOV B,#0FFH ;
RL A ; ACC左还移2位(数值*4)
RL A ;
CHKEY1234: ;
RLC A ; ACC带进位位左环移1位
INC B ; B=00H; C+1
JC CHKEY1234 ; 若C=1(原A的高位移0给C)则扫描A的下一位
LCALL DISPLAY ; 扫描完成后, 调用显示子程序
RET ; 返回主程序,感觉这里没太大意义

KEY5678: ; 参考key1234过程
MOV B,#0FFH
RL A;
RL A
CHKEY5678:
RLC A
INC B
JC CHKEY5678
INC B
INC B
INC B
INC B
LCALL DISPLAY
RET
; 显示子程序
DISPLAY:
MOV DPTR,#TAB ;段码表首地址给DPTR
MOV A,B ;A=B
MOVC A,@A+DPTR ;查表得到数值的段码
LOOP:
MOV P1,A ;循环送P1口A的值
SJMP LOO......2.打开的是吉祥,看到的是鸿运,愿所有祝福涌向您,祈望您心情舒畅万事顺意,愿这美好心愿化为最真挚的问候传给您!
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-12
8路抢答器我来帮你做啊呵呵~~

我不懂汇编,懂一点c,也不太懂单片机,现在做一个抢答器...
RLC A ; ACC带进位位左环移1位 INC B ; B=00H; C+1 JC CHKEY1234 ; 若C=1(原A的高位移0给C)则扫描A的下一位 LCALL DISPLAY ; 扫描完成后, 调用显示子程序 RET ; 返回主程序,感觉这里没太大意义 KEY5678: ; 参考key1234过程 MOV B,#0FFH RL ...

设计一个以单片机为核心的8位竞赛抢答器,要求如下:
8路抢答器,这种题目,在百度上真是泛滥成灾了,随便一搜就能搜到一大堆,有仿真图和程序全部资料的。或者百度文库里也同样可以搜索到,还是毕业论文,更是详细。下图是一个8路抢答器的仿真图。

如何设计基于单片机的多功能8路抢答器
制作抢答器可以用好多的方法,可以用单片机来完成,它的功能强大制作简单,并且外围的元件也很少;也可以用PLC来实现,他的制作也是比较简单;还可以用我们学过的EDA技术来制作;最后也可以用数字电路来实现,它的原理比较简单,集成块的价格也比较便宜且很容易购买,与我们学完的〈〈数字电路〉〉联系紧密,能将我们所学知识用...

51单片机抢答器论文提要怎么写
采用汇编和C语言进行软件编程,用keil软件进行调试,proteus软件进行仿真。最后把调试成功后的程序烧写到AT89S52单片机中,通电运行。抢答器正常工作时能指示出第一抢答者,并对违规操作进行报警。本项目设计的抢答器能很好的完成设 计任务,但本人认为这个设计并不具备推广应用价值,因为这个设计的硬件电路花费...

单片机做的八路抢答器元件有哪些
89c51,或c52,或s51,s52,晶振11.0592MHz ,陶瓷电容30p两个,按键8个,数码管1个,复位电解电容1个,100uf可以,2k电阻,蜂鸣器,控制按键1个,2个或3个。若干连线。万能板。

求一个单片机的C语言的八路抢答器程序,要求主持人按下按钮后有30秒抢 ...
数码管采用的是共阴极数码管。加电后,数码管无显示;当主持人按下开始键时,数码管显示30S倒计时开始,等待抢答。当有人抢答时,单位数码管显示序号,10S倒计时开始。程序已发送到你邮箱,有时间请查收。有问题随时联系我。

自学单片机好吃力,怎么办?如题 谢谢了
现在C语言编写单片机程序已经很顺手了,嘿嘿ie~~,我也是自学单片机,不过我想你要是真的想学,这个方法也不错,因为在应用过程很有新鲜感和成就感,找一个自己喜欢C语言应用方面来一起学习,这样不仅能学C语言,更重要的是这样学习能提高C语言了解的同时提高的C语言编程能力,我觉得是不错,...

抢答器电路图3个人用的 用到单片机芯片。不用太复杂。简单的就行。多 ...
随便弄什么单片机都行,8051、PIC、MSP430、AVR、ARM,还有台湾或者大陆造的好多1块钱左右的单片机,只要IO口够用就行。需要7个IO口:三个接按键、三个接LED、还有一个复位。剩下的都靠程序实现了。

51单片机四路抢答器毕业论文 只要四路
计数器 T1,并装入初值,开总中断和串行口 中断 总开关是否按下 允许接收,并显示抢答时间倒计时 是否接受到抢答信号 显示优先按下键的选手号码, 并屏蔽其他选手 号码 图 1-2 系统方案论证 第二章 系统方案论证方案一:如图 2-1,采用一个单片机,一个计时器,一个 数码管,选手通过按下开关作为输入信号,完成抢答...

怎么设计基于51单片机的八位抢答器课程设计用c语言?
1:主持人端有一个单片机设备 且设备有一个或多个按键,单个按键,那么就做成按键复用,如果是多个按键,那就可以按要求设置按键功能和数量。参赛队每队一个设备,如果不方便能过连线来通讯,就采用无线通讯,抢答端只需一个按键按键,同时在按键里或边上用指示灯来指示状诚。2:逻辑,当主持人按下...

相似回答
大家正在搜