找回密码
 注册
关于网站域名变更的通知
查看: 297|回复: 1
打印 上一主题 下一主题

单片机汇编程序设计之时间片

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-5 10:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
单片机汇编程序设计之时间片4 R& L+ Y* I) ]. M, f  `

8 M- V0 |% {% U

6 H9 J8 f9 b2 x: p: l/ [

曾在某个论坛上看过这样一句话——给每个模块都分配一个时间,这样才能写好汇编。

当时觉着有些道理,却不能很深地体会。

记得刚学单片机汇编的时候,印象最深的莫过于循环点亮一排led.。先点亮一个、延时、计数值不为零则移位(寄存器)点亮下一个......十分类似于c中的

while(n--){

//...led=1;

delay_ms(500);

}

请注意‘延时’,在这段时间内单片机不可以做其它事。如果此时要检测一个按键是否按下,按键会显得十分不灵活。当然可以用中断的方式检测按键(硬件消抖),然而事实上,当系统比较‘庞大’时,中断的资源是十分宝贵的,不到急需的时候最好别使用。

为了让mcu能在led延时期间做其他事,可以使用查询的方式判断led是否需要切换,比如开启一个定时器,判断计数值是否>=规定的延时值,相等,则点亮下一个led;不等,则退出,让单片机做其它事(检测按键)。事实上,这样做可以解决问题,但同时带来一大堆麻烦:定时器的数量可能不够用(主程序中有多处使用定时器)、需要设定一大堆标志位....

我想,应该这样做。

游客,如果您要查看本帖隐藏内容请回复


! n! E4 t. I4 }0 B2 \& A; k

该用户从未签到

2#
发表于 2019-3-5 11:43 | 只看该作者
谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-20 18:36 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表