久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1472|回復: 1
打印 上一主題 下一主題
收起左側

單片機串口發送外部中斷次數為什么不成功?

[復制鏈接]
跳轉到指定樓層
樓主
ID:721008 發表于 2021-1-8 15:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想要串口發送外部中斷的次數,外部中斷發生了一次,串口就發送一次數據給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;         
}

不知道是什么原因,還望大神給解答一下,本人現在是初學者,沒能找出原因。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:390416 發表于 2021-1-8 15:40 | 只看該作者
http://www.zg4o1577.cn/bbs/dpj-200927-1.html
STC單片機串口發送 不需要while死等 串口接收執行軟件復位

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一级片视频 | 亚洲欧美在线视频 | 91久久国产综合久久91精品网站 | 成人在线网址 | 欧美日韩在线一区二区 | 亚洲欧美中文字幕 | 日韩av免费播放 | 日韩精品片 | 欧美日韩精品一区二区 | 一区在线观看 | 亚洲欧美综合网 | 欧美日韩中文在线 | 欧美在线视频播放 | 国产精品不卡视频 | 88av视频 | 九九热在线精品 | 久久在线 | 国产美女一区二区三区 | 操久 | 久久久精品在线观看 | 欧美视频在线播放 | 精品国产福利 | 一级片黄色片 | 黄色三级在线观看 | 中文字幕av片| 天天操天天做 | 一级片在线免费观看 | 国产一区二区三区在线 | 日韩中文在线视频 | 国产精品911 | 国产一区二区三区免费视频 | 亚洲一区二区三区视频 | 国产二区视频在线观看 | 成 人 黄 色 片 在线播放 | 欧美黑人一区二区三区 | 少妇综合| 亚洲天堂中文字幕 | 国产一区二区三区免费 | www.国产一区 | 久久久久久久久久久久久久久久久 | 日韩美女在线观看 |