;利用定時器定時一秒,產生中斷來時led流水顯示
;定時一秒,時鐘頻率為11.0592,每0.01s產生一次溢位中斷
;利用r2來對定時器0中斷計數,r2為100時,就定時1s了
count equ 9217 ;11.0592*1*10000/12
org 0000h
ljmp main
org 000bh
ajmp tim0 ;定時器0中斷入口
org 0030h
main:
mov r2, #0
mov tmod, #01h ;選擇定時方式,設定模式1,16位
mov th0, #high(65536 - count) ;定時器0初始化
mov tl0, #low(65536 - count)
setb tr0 ;開啟定時器0
setb et0 ;開啟定時器中斷
setb ea ;開啟總中斷
clr tf0 ;清除to溢位標誌位
mov p2, #0ffh
mov a, #0feh
sjmp $ ;等待中斷
org 000bh ;定時器0中斷入口位址
tim0:
clr tf0 ;清除to溢位標誌位
inc r2
mov th0, #high(65536 - count)
mov tl0, #low(65536 - count)
cjne r2, #100, return ;不相等跳轉到return,相等繼續執行
mov p2, a ;控制led燈顯示
jnb acc.7, clear ;led流水顯示,當(a) = 0111 1111時,跳轉到clear中
rl a ;迴圈左移一位
mov r2, #0
return:
reti ;返回中斷
clear:
mov a, #0feh
reti
end
;中斷計數100次為一秒
org 0000h
ljmp main
org 000bh ;定時器中斷0入口位址
ajmp tim0
org 0030h
main:
mov r2, #0
mov tmod, #01h ;選擇定時功能,模式1
mov th0, #high(65536 - 9217) ;初始化定時器
mov tl0, #low(65536 - 9217)
setb tr0 ;開啟定時器0
setb et0 ;開啟定時器0中斷
setb ea ;開啟總中斷
clr tf0 ;清中斷標誌
mov p1, #0ffh
sjmp $ ;等待中斷
org 000bh
tim0:
clr tf0 ;清中斷標誌,一定要有
inc r2
mov th0, #high(65536 - 9217)
mov tl0, #low(65536 - 9217)
cjne r2, #100, return ;判斷中斷計數是否100次,100次就對led進行取反,沒有,則中斷返回,從定時器0中斷入口位址進入
cpl p2.5
mov r2, #0
return:
reti
end
51微控制器控制LED顯示漢字
2007 12 25 12 34 26 用51微控制器控制led顯示漢字,電路中行方向由p0口和p2口完成掃瞄,由於p0口沒有上拉電阻,因此接乙個4.7k 8的排阻上拉。如沒有排阻,也可用8個普通的4.7k 1 8w電阻。為提供負載能力,接16個2n5551的npn三極體驅動。列方向則由4 16解碼...
微控制器 LED實驗
實 驗 報 告第頁 專業 軟體工程 班級 4 學號 123012005158 實驗日期 2007年11 月27 告退發 訂正 重做 課程微控制器程式設計 實驗名稱 led實驗 一 實驗目的 掌握 led工作原理和使用方法 二 實驗環境 pc,kc,51 板三 實驗內容 步驟和結果分析 編寫時鐘程式,...
51微控制器 LED點陣
這次的程式是通過控制led點陣,點亮乙個 號。我們使用的是乙個8 8的電子,需要操作16bit,實現對行和列的管理,這點其實和矩陣按鍵是有些類似,只不過乙個是輸入,乙個是輸出,都是通過逐行掃瞄實現的 矩陣按鍵由於每次只檢查乙個按鍵,也可以使用行列掃瞄 下面是led點陣的原理圖 從上圖可以看出,每乙個...