#include <stc89.h> #define uchar unsigned char #define uint unsigned int uint tjs;
void init_time()//定时器模式初始化 { EA=1; //开总中断 TMOD=0x02;//设定时器0模式2定时 100um TH0=TL0=155;//置定时器0初值,中断后,TH0中的值重新装入TL0,THO中值不变 TR0=0; //启动定时器0 ET0=1; //允许T0中断 SCON =0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr TMOD |=0x20 ; //TMOD: timer 1, mode 2, 8-bit reload PCON |=0x80 ; //SMOD=1; IE |=0x10; //串行口中断 (IE |=0x10;)开启 (IE &=0xEF;)关闭 TH1 =0xf3 ; //晶振=12MHz波特率4800 } /////////////////////////////////////
void sendchar(uchar ch){ TR1=1; //启动定时器1 ET1=1; //不允许T1中断 TI=0; SBUF=ch; while (TI==0) P05=0; //为什么会卡在这里?( P05脚的发光管一直亮!) TR1= 0 ; ////启动定时器1 ET1=0; //不允许T1中断 }
////////////////////////////// void main(void){ P14=0; //允许LED亮 init_time();//初始化定时器 TR0=1; //启动定时器T0 while(1){ if(tjs==5000){P01=~P01;tjs=0;} if(tjs==1000) sendchar(0x39); } }
void t0_int(void) interrupt 1 {tjs++;}
|