代码就是定时1MS输出字母G,
#include <c8051f410.h> #include <stdio.h>
#define uchar unsigned char #define uint unsigned int
uchar sendflag;
#define SYSCLK 24500000
sbit LED1 = P2^1;
void SYSCLK_Init(void)
{
OSCICN = 0x87;
}
void PORT_Init(void) { XBR0 = 0x01; //允许UART0,RX,TX连到2个端口引脚. XBR0=0000,0100 XBR1 = 0X40;
P0MDIN=0XFF; //P0口不配置为模拟输入 P0MDOUT=0XFF; //P0口为推换输出****** P1MDIN=0XFF; //P0口不配置为模拟输入 P1MDOUT=0Xff; //P0口为推换输出*/ }
void intsvr1(void) interrupt 1//定时器0中断服务程序 {
//LED1=!LED1; TH0= 0xf7; TL0= 0xd3;
sendflag=1;
if(sendflag) { printf("G");
sendflag=0; }
}
void main(void) { SYSCLK_Init(); //时钟初始化 PORT_Init(); //端口初始化 EA =1; IP =0x02; IE =0x02; PT0=1; //定时器0中断优先 ET0=1; //开放定时器0溢出中断 ET1=0; //禁止定时器1溢出中断(作为波特率发生器使用时一定要禁止) CKCON = 0x08; TCON = 0x50;
TMOD = 0x21; //选择T1,方式2,自动再装入8位计数器
TH0= 0xf7; TL0= 0xd3;
//TH1=-(SYSCLK/9600/32); TH1 = 0x96; SCON0 = 0x50; //选择串口方式1,波特率可变 SCON0=0101,0000 PCON = 0x00; ES0 = 1; //UART0中断开启
TR1 = 1;
TR0 = 1;
TI0=0; sendflag=1;
while(1) { LED1=!LED1;}
}
|