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 |