单片机流水灯汇编程序计时汇编程序添加暂停和继续

单片机的编程与汇编程序实例_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
单片机的编程与汇编程序实例
&&实验实例
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩203页未读,
定制HR最喜欢的简历
你可能喜欢能帮我编1个89C51单片机的汇编暂停程序吗_百度知道
能帮我编1个89C51单片机的汇编暂停程序吗
在程序执行过程中无论什么时候将p3.2置零,整个程序都暂停下来,一旦将P3.2口置位,程序继续进行、
我有更好的答案
P3.2为0利用外部中断0,即可.2:
EX0开中断,以后一旦P3;中断返回.
0030HSTART;等待P3.2置位.
,都会自动转去0003H处;……
可是我的程序里面有定时延时程序、如果正在定时或者延时的时候按下键了。这样也行吗?
如果正处于定时器中断程序中,还想要求按键产生中断,那就应该把外部中断0定为高优先级。在开中断的指令附近加上一句:SETB
PX0即可把外部中断0设置为高优先级。此时,无论是处于延时程序,还是中断程序,都能立即转到0003处执行。
大虾。这好像可以实现了。可是我还有一个问题。我这个程序主要是让P1.0P1.1P3.1等等IO口置高或者置低。我在暂停后(也就是进入中断后)想把这些口全部置高,单独P3.2和P3.5置低(也就是实现P3.5接发光管暂停时灯亮以示提醒)。当P3.2判断出为高位后(也就是跳出中断的死循环后)P1.0P1.1P3.1.....等等IO口恢复原来的状态,该高位高位,该低位低位,P3.5拉高。就是这样。。您能帮帮我么~
利用外部中断0,即可:
X0_INT中断程序太长,这里写不下了.
0030HSTART:
PX0设为高优先级.
EX0开中断,以后一旦P3.2为0,都会自动转去0003H处.
$;-------------------------下面是外部中断0的程序X0_INT:
P1.0对某些口置高…….
P1.3对某些口置低…….
$等待P3.2置位.
P1.7对某些口置高…….
P1.2对某些口置低…….
RETI中断返回.END
大虾。可是我在暂停的时候并不知道程序执行到哪个位置了。也就是说我在中断里是把所有IO口都拉高,可是我在恢复他们中断的时候并不知道他们中断前的状态。所以有没有办法可以保护现场?压栈什么的?我试了试MOV 30H,P1.0.PUSH,30H,可是系统只能用MOV 30H,P0这个指令(也就是说如果P1.0暂停前为低,而某些P1.x不为低,在暂停后通过MOV 30H,P0这个指令,会把所有p0口都拉低了)有没有好办法可以暂停后恢复io口原始状态的?
保护输出接口的原来数值,不能用压栈的方法。因为压入栈的信息,并非是以前输出的,而是现场从接口读入的。保护输出接口的原来数值,应该采用一个RAM单元,当做“影子”。每次向接口输出,也要把同样的数据,存入“影子”单元。中断返回前,把影子单元的内容,输出到接口即可。
呼呼。。大虾。我做出来啦~谢谢你啦。。感激不尽
来自:求助得到的回答
采纳率:64%
ORG 0003HJNB P3,为高出.2(INT0)一变低就进入中断了。在中断服务程序里判断为低停止开中断,只要P3.2
可是判断INT0变低的这个语句我应该放在程序的哪个位置才能让执行程序的整个过程中都能扫描到这句话呢?
这个不用判断,只在主程序开始开放中断就可以了,在主程序里加入:SETB EX0SETB EASETB IT0;这一句是设为边沿触发
进中断,判断P3.2口,为0一直循环判断,为1跳出循环再出中断
判断INT0变低,应该是根据任务情况设置的吧,整个程序可能需要多处写判断
其他1条回答
为您推荐:
其他类似问题
单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。扫二维码下载作业帮
3亿+用户的选择
下载作业帮安装包
扫二维码下载作业帮
3亿+用户的选择
帮忙用汇编语言编一下一个中断开关控制led不同的循环时间,单片机是89c51采用定时器T0的方式1的定时中断方式初始状态使P1口外接的8只led每0.5s循环依次闪亮,p3.3外接一个中断开关,按下第一次以2s循环闪亮,再按一次5s,再按0.5s,以此规律循环
作业帮用户
扫二维码下载作业帮
3亿+用户的选择
是要汇编呀,早不说,做了C的.
AJMP EX0INT
AJMP T0INT
ACALL INIT
MOV R0,#0FEH
ACALL DISP
CJNE R2,#0,WAY1
CJNE R1,#10,WAY1
CJNE R2,#1,WAY2
CJNE R1,#40,WAY2
CJNE R2,#2,MAIN1
CJNE R1,#100,MAIN1
AJMP MAIN1
JNB F0,DISPRET
MOV TMOD,#01H ;定时器T0工作方式1
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TH0,#3CH
MOV TL0,#0B0H
INC R1 ;时间常数,即进中断次数?
CJNE R2,#3,EX0RETI
为您推荐:
扫描下载二维码查看: 4345|回复: 1
[讨论] 请教怎么设置计时器的暂停键C程序?
我的思路是这样的:一个51的MCU+一个4位数码管+一个74LS138译码器+24M晶振.完成一个计秒和分的计时器。设置两个按键:开始和复位其中开始键可以开始计时,又可以暂停计时,再按一次,又接着计时。反正就是开始—暂停—开始—暂停—接着计时,只要不按复位。我想让它初始画面只显示一个0,先计时秒,到10秒以上在选通第三位数码管,到1分钟以上在选通第二位数码管,(其中第二位数码管的H段必须亮,作用是区分——分钟和秒钟),到10分钟以上在选通第一位数码管。就像这样显示顺序& && && &0& && && & ——0秒& && & 10& && && &——10秒& && & 19& && && &——19秒&&&&1.30& && && &——1分30秒&&& 9.00& && && &——9分0秒& 10.00& && &&&——10分0秒& 60.59& && && &——60分59秒循环计时。复位键清0 ,重新按开始键计时开始。怎么样,不难吧?兄弟们,我就是搞不定那个开始——暂停——开始接着计时的功能。身边也没有单片机朋友们交流,寄希望于你们了!
兄弟们最好写C的,汇编我可不会呀,!
如果你的中断没用的话, 可以用中断来做按键啊,开始后,启动定时器,再按一下,关闭定时器,再按一下,又开启定时器就好了。
Powered by3被浏览615分享邀请回答0添加评论分享收藏感谢收起

我要回帖

更多关于 单片机汇编程序100例 的文章

 

随机推荐