定时器0产生10MS中断,定时器1为9600波特率发生器 #include<reg51.h> #include<stdio.h>
#define uchar unsigned char #define uint unsigned int
uchar sendflag;
void intsvr1(void) interrupt 1//定时器0中断服务程序
{ TH0= -10000/256; TL0= -10000%256;
sendflag=1;
if(sendflag) { printf("*");
sendflag=0; } }
///////////////////////////////////////////////////////
void main(void)
{ EA=1;//开放所有中断 PT0=1; //定时器0中断优先 ET0=1; //开放定时器0溢出中断 IT0=1; //INT0边沿触发 IT1=1; //外部中断请求1边沿触发 EX0=1; //开放外部中断源0 EX1=1; //开放外部中断源1 ET1=1;//开放定时器1溢出中断
/////////////////////////////////////////////////////////////////////////// TCON=0x08; // TCON // D7 D6 D5 D4 D3 D2 D1 D0
// TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
//位地址 8F 8D 8B 8A 89 88
// 0 0 0 0 1 0 0 0 ///////////////////////////////////////////////////////////////////////////////
TMOD=0x21; // TMOD //位 7 6 5 4 3 2 1 0
// GATE C/T M1 M0 GATE C/T M1 M0
// 0 0 1 0 0 0 0 1 // TIME 1 | TIME 0 /////////////////////////////////////////////////////////////////////////////// TH0= -10000/256; TL0= -10000%256;
TL1=0xfc; TH1=0xfc; //////////////////////////////////////////////////////////////////////////////// SCON=0x50; // SCON //位 7 6 5 4 3 2 1 0
// SM0 SM1 SM2 REN TB8 RB8 TI RI
// 0 1 0 1 0 0 0 0
////////////////////////////////////////////////////////////////////////////////////// PCON=0x80;//波特率加倍
TR1=1; //运行TIME1 TR0=1; //运行TIME0 TI=1; //串口发送中断使能 sendflag=1; while(1) {} }
|