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