|
單片機(jī)的學(xué)習(xí):
對8位單片機(jī)的理解
1位有8字節(jié),一個(gè)字節(jié)有8個(gè)i/o口,如STC89C51單片機(jī):
P0.0~P0.7(一位)
P1.0~P1.7(一位)
P2.0~P2.7(一位)
P3.0~P3.7(一位)
XTAL1 XTAL2(外接晶振電路,但現(xiàn)在的好多單片機(jī)內(nèi)置有晶振電路)
RST(一位)
PSEN(一位)
ALE(一位)
EA(一位)
人類的視覺時(shí)間是1/24秒,小于此范圍內(nèi)的視覺時(shí)間是感覺不到的。
匯編延時(shí)的子程序一:
DELAY200MS: ;@12.000MHz
MOV 30H,#2
MOV 31H,#134
MOV 32H,#13
NEXT:
DJNZ 32H,NEXT
DJNZ 31H,NEXT
DJNZ 30H,NEXT
RET
DELAY150MS: ;@12.000MHz
MOV 30H,#2
MOV 31H,#40
MOV 32H,#16 ;未加H則表示為十進(jìn)制
NEXT:
DJNZ 32H,NEXT
DJNZ 31H,NEXT
DJNZ 30H,NEXT
RET
DELAY100MS: ;@12.000MHz
MOV 30H,#197
MOV 31H,#16 ;未加H則表示為十進(jìn)制
NEXT:
DJNZ 31H,NEXT ;自減15次
DJNZ 30H,NEXT ;自減(n-1)*(0-1)= (n-1)*255
RET
注意:
加“#”號表示一個(gè)數(shù),不加則表示一個(gè)“物理地址”
【重點(diǎn)】如何計(jì)算延時(shí)時(shí)間:
1.利用STC-V6.24中的延時(shí)計(jì)算器來生成匯編或C代碼
DELAY200MS: ;@11.0592MHz
PUSH 30H
PUSH 31H
PUSH 32H
MOV 30H,#2
MOV 31H,#103
MOV 32H,#140
NEXT:
DJNZ 32H,NEXT
DJNZ 31H,NEXT
DJNZ 30H,NEXT
POP 32H
POP 31H
POP 30H
RET
2.計(jì)算得到:
;2014年7月17日17:00:34 8個(gè)流水燈的演示
ORG 00H
MAIN:
MOV P2,#0AAH ;等價(jià)于#10101010B(從P2.1~p2.7管腳) 注意:如果匯編語言的數(shù)字表示是以字母開頭的話,則字母開頭要加零(0)如,0FF,0AA等
LCALL DELAY200MS
MOV P2,#55H ;等價(jià)于#01010101B(從P2.1~p2.7管腳)
LCALL DELAY200MS
SJMP MAIN
DELAY200MS: ;@12.000MHz
MOV 30H,#2 ;30H表示的是地址,單片機(jī)的一段數(shù)據(jù)緩存內(nèi)存單元,從30H~7FH共80個(gè)這樣的數(shù)據(jù)緩存單元
MOV 31H,#134
MOV 32H,#13 ;未加H則表示為十進(jìn)制
NEXT:
DJNZ 32H,NEXT ;自減12次
DJNZ 31H,NEXT ;自減133*(0-1)等價(jià)于133*255 = 33915
DJNZ 30H,NEXT ;自減1*(0-1)*(0-1)= 1*255*255 = 65025
RET ;所以總共自減12+33915+65025 = 98952次 每次執(zhí)行耗時(shí)為2us 所以總共耗時(shí)為98952*2 = 197904 us 約等于20萬us = 0.2s = 200ms
END
匯編延時(shí)的子程序二:
DELAY50MS:
MOV 30H,#90
MOV 31H,#158
NEXT:
DJNZ 31H,#NEXT
DJNZ 30H,#NEXT
RET
在匯編里";"或"//"可以屏蔽該行的語句
SJMP的轉(zhuǎn)移指令范圍為256字節(jié)
AJMP的跳轉(zhuǎn)范圍為2K
注意:當(dāng)所要跳轉(zhuǎn)的范圍比較長時(shí)用AJMP指令
時(shí)鐘周期 和 指令周期
在12MHz(兆)的時(shí)鐘一個(gè)周期的時(shí)間為1/12us(微秒)
在匯編中
0-1 = ? 結(jié)果是255 寫一個(gè)小程序來驗(yàn)證一下
時(shí)間的換算單位:
1秒=1000毫秒(ms)
1毫秒=1/1,000秒(s)
1秒=1,000,000 微秒(μs)
1微秒=1/1,000,000秒(s)
1秒=1,000,000,000 納秒(ns)
1納秒=1/1,000,000,000秒(s)
1秒=1,000,000,000,000 皮秒(ps)
1皮秒=1/1,000,000,000,000秒(s)
1s=1000ms
1ms=1000us
1us=1000ns
1ns=1000ps
對晶振的理解:
單片機(jī)的晶振堪稱為單片機(jī)的“心臟”,提供節(jié)拍的作用,即單片機(jī)工作一次,
它可能會振動(dòng)好幾次。其頻率一般在11.0592MHz左右,即1秒中內(nèi)單片機(jī)會振
動(dòng)11.0592M次
三極管的作用:
1. 開關(guān)控制
2. 信號放大
3. 電平轉(zhuǎn)換
74HC138簡稱為“三八譯碼器”
3-8即是單片機(jī)的IO口不夠用了,將單片機(jī)的3個(gè)IO口轉(zhuǎn)換為8個(gè)IO口,即3個(gè)輸入控制了
8個(gè)輸出,3個(gè)IO口形成8種不同的狀態(tài),從而控制相關(guān)燈或數(shù)碼管的亮滅。
|
|