專案一; 功能:乙個按鍵控制乙個led的亮滅
; 按鍵接p2.0口;led接p0.0口
主程式start: clr p0.0loop:
jb p2.0,exit
lcall d10ms
jb p2.0,exit
cpl p0.0
jnb p2.0等待按鍵釋放
exit: ajmp loop延時10ms子程式
d10ms: mov r7,#100d1: mov r6,#100djnz r6,$
djnz r7,d1
retend
專案二; 功能:乙個按鍵控制乙個led閃爍; 和熄滅兩種狀態
; 定義接線方法
key bit p2.0
led bit p0.0
; 定義程式儲存空間
*** 0000h
jmp 0030h
*** 0030h
主程式loop: call displaycall key_scan
ajmp loop
; 顯示子程式
display:jc mie
cpl led
lcall delay
jmp exit
mie: setb led
ljmp exit
; 按鍵處理子程式
key_scan:
jb key,exit
call d10ms
jb key,exit
jnb key,$
cpl c
ljmp exit
; 顯示延時子程式
delay: mov r5,#10d2: mov r4,#40
d3: mov r3,#250djnz r3,$
djnz r4,d3
djnz r5,d2
ljmp exit
; 按鍵消抖動延時子程式
d10ms: mov r7,#50d1: mov r6,#100djnz r6,$
djnz r7,d1
ljmp exit
; 公共退出標記
exit:
ret; 程式結束標記
end專案三; 功能:60秒倒計時器,60秒到後; 蜂鳴器報警,響3秒,按鍵控制; 重新從60秒開始計時
; 定義接線方法
key equ p2.1 ;重新從60秒開始
cs1 equ p2.2
cs2 equ p2.3
wr1 equ p2.4
sj equ p1
beep equ p2.5
; 儲存空間分配
*** 0000h
ajmp start
*** 000bh
ajmp time
*** 0030h
; 程式的初始化
start: clr beepmov tmod,#00000001bmov th0,#3ch
mov tl0,#0b0h
setb ea
setb et0
setb tr0
clr c ;定時時間到標誌mov r6,#60 ;60s為1分mov r5,#20 ;20次中斷為1秒mov 20h,#0 ;個位視訊記憶體mov 21h,#0 ;十位視訊記憶體; 主程式
loop: jc finish_0call data_0
call display
call key_scan
jmp loop
; 60秒到,蜂鳴器響3秒,然後停機finish_0:
setb beep
call delay3s
clr beep
sjmp停機
; 定時器t0中斷服務程式
time: mov th0,#3chmov tl0,#0b0h
djnz r5,exit1
mov r5,#20
djnz r6,exit1
setb c
exit1: reti
; 顯示資料處理
data_0: mov a,r6mov b,#10
div ab
mov 21h,a
mov 20h,b
ret; 顯示子程式
display:mov dptr,#tabmov a,20h
movc a,@a+dptr
mov sj,a
call duanxuan
mov sj,#11111110b
call weixuan
call delay
mov sj,#11111111b
call weixuan
mov dptr,#tab1
mov a,21h
movc a,@a+dptr
mov sj,a
call duanxuan
mov sj,#11111101b
call weixuan
call delay
mov sj,#11111111b
call weixuan
; 按鍵處理子程式
key_scan:
jb key,exit
call delay
jb key,exit
mov r6,#60
exit:
ret; 顯示送段選碼子程式
duanxuan:clr wr1
clr cs1
setb wr1
setb cs1
ret; 顯示送位選碼子程式
weixuan:clr wr1
clr cs2
setb wr1
setb cs2
ret; 顯示及按鍵去抖動延時子程式
delay: mov r3,#255djnz r3,$
ret; 3s延時子程式
delay3s:mov r7,#12loop0: mov r4,#250loop1: mov r5,#250loop2: nop
nopdjnz r5,loop2
djnz r6,loop1
djnz r7,loop0
ret; 數碼管顯示7段碼表
微控制器實習
第四次實習 樓道照明燈 一 實習題目 樓道照明燈 二 實習目的 綜合實驗,掌握80c51微控制器的程式設計除錯方法。三 實習內容 實現樓道間照明燈的方便控制,乙個照明燈,在樓上和樓下各有乙個 閉合式 開關控制。開關的閉合並不直接決定燈的亮滅,而開關狀態的改變才是決定燈亮滅的關鍵。即不管兩個開關當前的...
微控制器總結
微控制器引腳 80c51的資料儲存器配置 80c51的特殊功能暫存器 sfr 五個中斷源 兩個外部中斷,兩個定時器計數器中斷,乙個序列介面中斷。int0 int1輸入低電平或負跳變訊號作為中斷觸發事件 t0 t1定時器 計數器中斷 序列口中斷 8051微控制器中斷源的向量位址 tcon的中斷標誌 中...
微控制器學習
自己不知不覺已經走過了五年的微控制器學習之旅。在2003年最初接觸微控制器的時候,在我心中覺得51就是微控制器,微控制器就是51,根本不知道還有其他微控制器的存在。那時候老師只教會了我們組合語言,根本不知道用c語言也可以進行微控制器開發。幸運的是,我加入了微控制器興趣小組,在老師的指導下,做了一系列...