欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機串口發(fā)送外部中斷次數(shù)為什么不成功? [打印本頁]

作者: ADMIN_ALLENY    時間: 2021-1-8 15:34
標題: 單片機串口發(fā)送外部中斷次數(shù)為什么不成功?
想要串口發(fā)送外部中斷的次數(shù),外部中斷發(fā)生了一次,串口就發(fā)送一次數(shù)據(jù)給PC,但是我的程序?qū)嶋H測出來的情況是串口一直在發(fā)送數(shù)據(jù)。

#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位數(shù)據(jù),可變波特率
AUXR &= 0xBF;        //定時器1時鐘為Fosc/12,即12T
AUXR &= 0xFE;        //串口1選擇定時器1為波特率發(fā)生器
TMOD &= 0x0F;        //設(shè)定定時器1為16位自動重裝方式
TL1 = 0xE6;                //設(shè)定定時初值
TH1 = 0xFF;                //設(shè)定定時初值
ET1 = 0;                //禁止定時器1中斷
TR1 = 1;                //啟動定時器1

}

void int0_init()                                                                                                                                 
{
  IT0 = 1;            //為 1 是下降沿; 為 0 是低電平
  EX0 = 0;                //為 1 允許中斷; 為 0 是禁止中斷
}

/*------------------------------------------------
                    主函數(shù)
------------------------------------------------*/
void main (void)
{
InitUART();
stc_init();
int0_init();
EA=1;
while (1)                       
{
  EX0 = 1;
//  SendStr("UART test, thank you!");
//    delay_xms(240);//延時循環(huán)發(fā)送
//    delay_xms(240);
}
}

/*------------------------------------------------
                    發(fā)送一個字節(jié)
------------------------------------------------*/
void Sendint(unsigned int dat)
{

SBUF =dat/256;
while(!TI);
      TI = 0;
SBUF =dat%256;
while(!TI);
      TI = 0;

}

///*------------------------------------------------
//                    發(fā)送一個字節(jié)
//------------------------------------------------*/
//void SendByte(unsigned char dat)
//{
// SBUF = dat;
// while(!TI);
//      TI = 0;
//}
///*------------------------------------------------
//                    發(fā)送一個字符串
//------------------------------------------------*/
//void SendStr(unsigned char *s)
//{
// while(*s!='\0')// \0 表示字符串結(jié)束標志,
//                //通過檢測是否字符串末尾
//  {
//  SendByte(*s);
//  s++;
//  }
//}

void int0() interrupt 0         
{
int0_count++;
Sendint(int0_count);
if(int0_count>65534)
int0_count=0;         
}

不知道是什么原因,還望大神給解答一下,本人現(xiàn)在是初學者,沒能找出原因。

作者: 人人學會單片機    時間: 2021-1-8 15:40
http://m.raoushi.com/bbs/dpj-200927-1.html
STC單片機串口發(fā)送 不需要while死等 串口接收執(zhí)行軟件復位

你去看看我的貼子,Uart1_Flag=1,就能發(fā)送一次多個字節(jié)。發(fā)送完成后自動停止。
你在你的外部中斷里面把Uart1_Flag=1;即可。注意,兩次外部中斷的間隔時間不能比串口發(fā)送時間短。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1