80C51系列單片機(jī)的升級(jí)版本C8051F
3 應(yīng)用舉例
該例中要用的引出腳有一個(gè)串行異步通信UART和一個(gè)外中斷INT0。按照系統(tǒng)默認(rèn)的優(yōu)先順序,P0口被內(nèi)部資源引出而占用,其中P0.0為UART通信的RX端, P0.1為UART通信的TX端,P0.3為外中斷INT0輸入引腳,其它端口為通用I/O口。P1口為具有上拉電阻的輸入口,P2口為通用推挽的輸出口,P3口也是通用推挽輸出口。具體如下:
$include(c8051f120.inc)
ORG 00H
JMP RESET ;程序入口
ORG 03H
JMP EX_INT ;外中斷INT0入口
ORG 0BH
JMP TIME_(tái)0 ;定時(shí)器0中斷入口
ORG 100H
RESET?MOV, WDTCN,#0DEH ?禁止看門狗
MOV WDTCN,#0ADH
MOV SFRPAGE, #0FH ;取特殊功能寄存器的15頁(yè)
MOV OSCXCN,#01100111B ;外用時(shí)鐘源選擇晶體,頻率范圍在30MHz以下
ORL PLL0CN,#00000111B ;用外部晶振作為PLL的源
MOV PLL0DIV,#00000001B ;PLL的輸入除系數(shù)1(復(fù)位后默認(rèn))
MOV PLL0MUL,#00000010B ;PLL的倍頻系數(shù)為2(25MHz晶振)
MOV PLL0FLT,#00010001B ;PLL的濾波參數(shù)(復(fù)位后默認(rèn)為00110001B)
MOV R4,#0 ;延遲一會(huì)兒,使晶振穩(wěn)定
NNOP1:MOV R5,#0
DJNZ R5,$
DJNZ R4,NNOP1
MOV CLKSEL,#00000010B ;系統(tǒng)時(shí)鐘源用晶振再經(jīng)鎖相環(huán)PLL二倍頻,產(chǎn)生50MHz的時(shí)鐘
ANL OSCICN,#01111111B ?;允許外部振蕩,禁止內(nèi)部振蕩
MOV XBR2;#01000000B ;使能交叉譯碼開關(guān)(這條指令很重要)
MOV P2MDOUT,#11111111B ;P2口置成輸出方式
MOV P3MDOUT,#11111111B ;P0口置成輸出方式(復(fù)位默認(rèn)為0__開漏)
MOV XBR1,#0000100B ;允許外中斷0連到端口
MOV SFRPAGE, #0H ;取特殊功能寄存器的0頁(yè)(因?yàn)橛嘘P(guān)定時(shí)器、中斷的SFR在0頁(yè))
SETB EX0 ;允許外中斷0
SETB IT0 ;INT0下降沿中斷
MOV TMOD,#21h ;設(shè)置定時(shí)器0為方式1, 定時(shí)器1為方式2
MOV CKCON,#08h ;選定時(shí)器0時(shí)鐘為系統(tǒng)時(shí)鐘,定時(shí)器1時(shí)鐘為系統(tǒng)時(shí)鐘除以12
MOV TH1,#242 ;(50/12)MHz的時(shí)鐘產(chǎn)生9600波特率的計(jì)數(shù)初值為242
SETB TR0 ;接通定時(shí)0
SETB TR1 ;接通定時(shí)1
CLR ET1 ;禁止定時(shí)器1中斷
MOV SCON,#50H ;串口工作于方式1,允許接收,單機(jī)工作
SETB ET0 ;允許T0中斷
SETB PT0 ;T0的中斷優(yōu)先級(jí)高
SETB EA ;開中斷
評(píng)論