新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 80C51系列单片机的升级版本C8051F

80C51系列单片机的升级版本C8051F

作者: 时间:2011-05-07 来源:网络 收藏

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,$80C51系列单片机的升级版本C8051F

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 ;开中断



评论


相关推荐

技术专区

关闭