80C51系列单片机的升级版本C8051F
3 应用举例
该例中要用的引出脚有一个串行异步通信UART和一个外中断INT0。按照系统默认的优先顺序,P0口被内部资源引出而占用,其中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的输入除系数1(复位后默认)
MOV PLL0MUL,#00000010B ;PLL的倍频系数为2(25MHz晶振)
MOV PLL0FLT,#00010001B ;PLL的滤波参数(复位后默认为00110001B)
MOV R4,#0 ;延迟一会儿,使晶振稳定
NNOP1:MOV R5,#0
DJNZ R5,$
DJNZ R4,NNOP1
MOV CLKSEL,#00000010B ;系统时钟源用晶振再经锁相环PLL二倍频,产生50MHz的时钟
ANL OSCICN,#01111111B ?;允许外部振荡,禁止内部振荡
MOV XBR2;#01000000B ;使能交叉译码开关(这条指令很重要)
MOV P2MDOUT,#11111111B ;P2口置成输出方式
MOV P3MDOUT,#11111111B ;P0口置成输出方式(复位默认为0__开漏)
MOV XBR1,#0000100B ;允许外中断0连到端口
MOV SFRPAGE, #0H ;取特殊功能寄存器的0页(因为有关定时器、中断的SFR在0页)
SETB EX0 ;允许外中断0
SETB IT0 ;INT0下降沿中断
MOV TMOD,#21h ;设置定时器0为方式1, 定时器1为方式2
MOV CKCON,#08h ;选定时器0时钟为系统时钟,定时器1时钟为系统时钟除以12
MOV TH1,#242 ;(50/12)MHz的时钟产生9600波特率的计数初值为242
SETB TR0 ;接通定时0
SETB TR1 ;接通定时1
CLR ET1 ;禁止定时器1中断
MOV SCON,#50H ;串口工作于方式1,允许接收,单机工作
SETB ET0 ;允许T0中断
SETB PT0 ;T0的中断优先级高
SETB EA ;开中断
评论