新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机汇编程序设计之时间片

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

作者: 时间:2013-05-08 来源:网络 收藏

;========================================================

; timer0中断服务程序

;入口 无(timer0初始化函数未给出)

;出口 r_sys_slice

;

; 用于系统计时,每50us,r_sys_slice+=1

;========================================================

timer0_isev:

push

bclr interrupt_flag ;清中断标志

mov a,#256-50 ;定时初值初值

mov time,a

inc r_sys_slice

pop

reti

;========================================================

; 系统

;入口 r_sys_slice

;出口 r_led_cyc_cnt、r_sw_cyc_cnt

;

; 确定时间基准10ms=50us*200

;========================================================

sys_time:

if(r_sys_slice>=200){

r_sys_slice=0;

r_led_cyc_cnt++;

r_sw_cyc_cnt++;

}

ret

;========================================================

; 按键检测

;入口 r_sw_cyc_cnt

;出口 无

;

; 每50ms检测一次按键

;========================================================

ck_sw:

if(r_sw_cyc_cnt>=5){

r_sw_cyc_cnt=0;

;check sw

;....

}

ret

;========================================================

; 循环点亮led

;入口 r_led_cyc_cnt

;出口 ...

;

; 每个led亮500ms

;========================================================

flash_led:

if(r_led_cyc_cnt>=50){

r_led_cyc_cnt=0;

;light next led

}

ret

end

;---------------------------------------------------------

这样写完后,除满足点亮led的同时有效检测按键,还便于扩展其它功能。且可以认为每个模块都是实时运行的。

如果,编译环境允许,将每个模块放在一个单独的文件中,大大提高程序的可读性。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭