想要串口发送外部中断的次数,外部中断发生了一次,串口就发送一次数据给PC,但是我的程序实际测出来的情况是串口一直在发送数据。
#include "stc8g.h"
#include "COMMON.H"
uint int0_count=0;
void SendStr(unsigned char *s);
void Sendint(unsigned int dat);
/*------------------------------------------------
串口初始化
------------------------------------------------*/
void InitUART (void)//9600bps@12.000MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xE6; //设定定时初值
TH1 = 0xFF; //设定定时初值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
void int0_init()
{
IT0 = 1; //为 1 是下降沿; 为 0 是低电平
EX0 = 0; //为 1 允许中断; 为 0 是禁止中断
}
/*------------------------------------------------
主函数
------------------------------------------------*/
void main (void)
{
InitUART();
stc_init();
int0_init();
EA=1;
while (1)
{
EX0 = 1;
// SendStr("UART test, thank you!");
// delay_xms(240);//延时循环发送
// delay_xms(240);
}
}
/*------------------------------------------------
发送一个字节
------------------------------------------------*/
void Sendint(unsigned int dat)
{
SBUF =dat/256;
while(!TI);
TI = 0;
SBUF =dat%256;
while(!TI);
TI = 0;
}
///*------------------------------------------------
// 发送一个字节
//------------------------------------------------*/
//void SendByte(unsigned char dat)
//{
// SBUF = dat;
// while(!TI);
// TI = 0;
//}
///*------------------------------------------------
// 发送一个字符串
//------------------------------------------------*/
//void SendStr(unsigned char *s)
//{
// while(*s!='\0')// \0 表示字符串结束标志,
// //通过检测是否字符串末尾
// {
// SendByte(*s);
// s++;
// }
//}
void int0() interrupt 0
{
int0_count++;
Sendint(int0_count);
if(int0_count>65534)
int0_count=0;
}
不知道是什么原因,还望大神给解答一下,本人现在是初学者,没能找出原因。
|