微控制器技能大賽訓練

2021-03-04 09:17:54 字數 3658 閱讀 6278

專案一; 功能:乙個按鍵控制乙個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語言也可以進行微控制器開發。幸運的是,我加入了微控制器興趣小組,在老師的指導下,做了一系列...