?? a4_5_3.asm
字號:
;///////////////////////////////////////////
;本程序源代碼由單片機培訓網提供.
;單片機培訓網,讓更多人學習單片機更容易.
;第一網址----www.mcuedu.com
;第二網址----http://51_train.nease.net
;創辦人------劉永忠
;熱線電話----(0755)27529998
;email-------aa815@163.com
;用計時中斷法實現廣告燈左移
;8個LED每隔1秒左移一次
;TIMER0每隔10毫秒產生一次中斷
;每產生一百次中斷LED左移一次
;程序難易等級--------稍難
;思考:如何使8個LED每隔0.5秒左移一次?
;2004-7-11 11:19
;///////////////////////////////////////////
led_port equ p0 ;便于移植到不同的硬件上
org 0000h ;主程序起始地址
ajmp start ;跳至主程序
org 0bh ;TIMER0中斷起始地址
jmp tim0 ;跳至TIMER0中斷服務程序TIM0
start:mov tmod,#00000001b ;設定TIMER0工作在MODE1
mov th0,#low(65536-10000) ;10000US
mov tl0,#high(65536-10000)
setb tr0 ;啟動TIMER0
mov ie,#10000010b ;TIMER0中斷使能
mov r5,#100 ;設中斷100次,即一秒
mov led_port,#0feh ;左移初值
jmp $ ;無窮循環
tim0: push acc ;將A的值暫存于堆棧
mov th0,#high(65536-10000) ;重設計時初值
mov tl0,#low(65536-10000)
djnz r5,loop ;中斷一百次?不是則到LOOP
mov r5,#100 ;是則重設R5=100
mov a,led_port ;讀入LED端口的數據至A
rl a ;將A左移一位
mov led_port,a ;將A輸出至LED端口
loop: pop acc ;至堆棧取回A的值
reti ;返回主程序
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -