娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年11月08日(星期五)

正在發(fā)生

2021年11月08日 | 51單片機實現(xiàn)通過串口用delay延時方式發(fā)送一串?dāng)?shù)據(jù)

發(fā)布者:masphia 來源: eefocus關(guān)鍵字:51單片機  串口  delay  延時方式  數(shù)據(jù) 手機看文章 掃描二維碼
隨時隨地手機看文章

一、使用proteus繪制簡單的電路圖,用于后續(xù)仿真

二、編寫程序


/********************************************************************************************************************

---- @Project: USART

---- @File: main.c

---- @Edit: ZHQ

---- @Version: V1.0

---- @CreationTime: 20200713

---- @ModifiedTime: 20200713

---- @Description:

---- 波特率是:9600 。

---- 按一次按鍵S1,單片機就往上位機發(fā)送以下一串?dāng)?shù)據(jù):eb 00 55 01 00 00 00 00 41

---- 單片機:AT89C52

********************************************************************************************************************/

#include "reg52.h"

/*——————宏定義——————*/

#define FOSC 11059200L

#define BAUD 9600

#define T1MS (65536-FOSC/12/500)   /*0.5ms timer calculation method in 12Tmode*/

 

#define const_send_size 20 /*串口發(fā)送數(shù)據(jù)的緩沖區(qū)數(shù)組大小*/

 

#define const_voice_short 40 /*蜂鳴器短叫的持續(xù)時間*/

#define const_key_time1 20 /*按鍵去抖動延時的時間*/

 

/*——————變量函數(shù)定義及聲明——————*/

/*蜂鳴器的驅(qū)動IO口*/

sbit BEEP = P2^7;

/*LED*/

sbit LED = P3^5;

 

/*按鍵*/

sbit Key_S1 = P0^0;

sbit Key_Gnd = P0^4;

 

unsigned char ucSendregBuf[const_send_size]; /*接收串口中斷數(shù)據(jù)的緩沖區(qū)數(shù)組*/

 

/*為串口計時器多增加一個原子鎖,作為中斷與主函數(shù)共享數(shù)據(jù)的保護(hù)*/

unsigned char ucVoiceLock = 0; /*蜂鳴器鳴叫的原子鎖*/

 

unsigned int uiVoiceCnt = 0; /*蜂鳴器鳴叫的持續(xù)時間計數(shù)器*/

 

unsigned char ucKeySec = 0; /*被觸發(fā)的按鍵編號*/

unsigned int uiKeyTimeCnt1 = 0; /*按鍵去抖動延時計數(shù)器*/

unsigned char ucKeyLock1 = 0; /*按鍵觸發(fā)后自鎖的變量標(biāo)志*/

/**

* @brief  定時器0初始化函數(shù)

* @param  無

* @retval 初始化T0

**/

void Init_T0(void)

{

TMOD = 0x01;                    /*set timer0 as mode1 (16-bit)*/

TL0 = T1MS;                     /*initial timer0 low byte*/

TH0 = T1MS >> 8;                /*initial timer0 high byte*/

}

 

/**

* @brief  串口初始化函數(shù)

* @param  無

* @retval 初始化T0

**/

void Init_USART(void)

{

SCON = 0x50;

TMOD = 0x21;                    

TH1=TL1=-(FOSC/12/32/BAUD);

}

 

/**

* @brief  外圍初始化函數(shù)

* @param  無

* @retval 初始化外圍

* 讓數(shù)碼管顯示的內(nèi)容轉(zhuǎn)移到以下幾個變量接口上,方便以后編寫更上一層的窗口程序。

* 只要更改以下對應(yīng)變量的內(nèi)容,就可以顯示你想顯示的數(shù)字。

**/

void Init_Peripheral(void)

{

ET0 = 1;/*允許定時中斷*/

TR0 = 1;/*啟動定時中斷*/

TR1 = 1;

ES = 1; /*允許串口中斷*/

EA = 1;/*開總中斷*/  

}

 

/**

* @brief  初始化函數(shù)

* @param  無

* @retval 初始化單片機

**/

void Init(void)

{

LED  = 0;

BEEP = 1;

Key_Gnd = 0;

Init_T0();

Init_USART();

}

/**

* @brief  延時函數(shù)

* @param  無

* @retval 無

**/

void Delay_Long(unsigned int uiDelayLong)

{

   unsigned int i;

   unsigned int j;

   for(i=0;i   {

      for(j=0;j<500;j++)  /*內(nèi)嵌循環(huán)的空指令數(shù)量*/

          {

             ; /*一個分號相當(dāng)于執(zhí)行一條空語句*/

          }

   }

}

/**

* @brief  延時函數(shù)

* @param  無

* @retval 無

**/

void Delay_Short(unsigned int uiDelayShort)

{

  unsigned int i;

  for(i=0;i  {

; /*一個分號相當(dāng)于執(zhí)行一條空語句*/

  }

}

/**

* @brief  串口發(fā)送函數(shù)

* @param  ucSendData

* @retval 在發(fā)送一串?dāng)?shù)據(jù)中,每個字節(jié)之間必須添加一個延時,用來等待串口發(fā)送完成。

* 不增加延時,單單靠發(fā)送完成標(biāo)志位來判斷還是容易出錯,在51,PIC單片機中都是這么做。

* 在stm32單片機中,可以不增加延時,直接靠單片機自帶的標(biāo)志位來判斷就很可靠。

**/

void eusart_send(unsigned char ucSendData)

{

ES = 0; /*關(guān)串口中斷*/

TI = 0; /*清零串口發(fā)送完成中斷請求標(biāo)志*/

SBUF = ucSendData; /*發(fā)送一個字節(jié)*/

 

Delay_Short(400); /*每個字節(jié)之間的延時。延時的大小請根據(jù)實際項目來調(diào)整*/

 

TI = 0; /*清零串口發(fā)送完成中斷請求標(biāo)志*/

ES = 1; /*允許串口中斷*/

}

 

/**

* @brief  按鍵掃描函數(shù)

* @param  無

* @retval 放在定時中斷里

**/

void key_scan(void)

{

if(Key_S1 == 1) /*IO是高電平,說明按鍵沒有被按下,這時要及時清零一些標(biāo)志位*/

{

ucKeyLock1 = 0; /*按鍵自鎖標(biāo)志清零*/

uiKeyTimeCnt1 = 0; /*按鍵去抖動延時計數(shù)器清零*/

}

else if(ucKeyLock1 == 0) /*有按鍵按下,且是第一次被按下*/

{

uiKeyTimeCnt1 ++; /*累加定時中斷次數(shù)*/

if(uiKeyTimeCnt1 > const_key_time1)

{

uiKeyTimeCnt1 = 0;

ucKeyLock1 = 1; /*自鎖按鍵置位,避免一直觸發(fā)*/

ucKeySec = 1;

}

}

}

 

/**

* @brief  按鍵服務(wù)的應(yīng)用程序

* @param  無

* @retval 無

**/

void key_service(void)

{

unsigned int i;

switch(ucKeySec) /*按鍵服務(wù)狀態(tài)切換*/

{

case 1:

ucSendregBuf[0] = 0xeb; /*把準(zhǔn)備發(fā)送的數(shù)據(jù)放入發(fā)送緩沖區(qū)*/

ucSendregBuf[1] = 0x00;

ucSendregBuf[2] = 0x55;

ucSendregBuf[3] = 0x01;

ucSendregBuf[4] = 0x00;

ucSendregBuf[5] = 0x00;

ucSendregBuf[6] = 0x00;

ucSendregBuf[7] = 0x00;

ucSendregBuf[8] = 0x41;

for(i = 0; i <= 8; i ++)

{

eusart_send(ucSendregBuf[i]); /*發(fā)送一串?dāng)?shù)據(jù)給上位機*/

}

 

ucVoiceLock = 1; /*原子鎖加鎖,保護(hù)中斷與主函數(shù)的共享數(shù)據(jù)*/

uiVoiceCnt = const_voice_short; /*按鍵聲音觸發(fā),滴一聲就停。*/

ucVoiceLock = 0; /*原子鎖解鎖*/

ucKeySec = 0; /*響應(yīng)按鍵服務(wù)處理程序后,按鍵編號清零,避免一致觸發(fā)*/

break;

}

}

 

/**

* @brief  定時器0中斷函數(shù)

* @param  無

* @retval 無

**/

void ISR_T0(void) interrupt 1

{

TF0 = 0;  /*清除中斷標(biāo)志*/

TR0 = 0; /*關(guān)中斷*/

/* 

* 此處多增加一個原子鎖,作為中斷與主函數(shù)共享數(shù)據(jù)的保護(hù)

*/

if(ucVoiceLock == 0) /*原子鎖判斷*/

{

if(uiVoiceCnt != 0)

{

uiVoiceCnt --;

BEEP = 0;

}

else

{

;

BEEP = 1;

}

}

 

key_scan();

 

TL0 = T1MS;                     /*initial timer0 low byte*/

TH0 = T1MS >> 8;                /*initial timer0 high byte*/

  TR0 = 1; /*開中斷*/

}

 

/**

* @brief  串口接收數(shù)據(jù)中斷

* @param  無

* @retval 無

**/

void usart_receive(void) interrupt 4

{

if(RI == 1)

{

RI = 0;

}

else

{

TI = 0;

}

}

 

/*————————————主函數(shù)————————————*/

/**

* @brief  主函數(shù)

* @param  無

* @retval 實現(xiàn)LED燈閃爍

**/

void main()

{

/*單片機初始化*/

Init();

/*延時,延時時間一般是0.3秒到2秒之間,等待外圍芯片和模塊上電穩(wěn)定*/

Delay_Long(100);

/*單片機外圍初始化*/

Init_Peripheral();

while(1)

{

key_service(); /*按鍵服務(wù)的應(yīng)用程序*/

}

}

 

三、仿真實現(xiàn)


關(guān)鍵字:51單片機  串口  delay  延時方式  數(shù)據(jù) 引用地址:51單片機實現(xiàn)通過串口用delay延時方式發(fā)送一串?dāng)?shù)據(jù)

上一篇:51單片機實現(xiàn)通過串口用計數(shù)延時方式發(fā)送一串?dāng)?shù)據(jù)
下一篇:51單片機實現(xiàn)在串口接收中斷里即時解析數(shù)據(jù)頭的特殊程序框架

0

推薦閱讀

智能家居產(chǎn)品和自動化的設(shè)備都是為了實現(xiàn)簡單生活。 通過家中連接的各種電子產(chǎn)品,無需擔(dān)心家務(wù),例如在睡覺前關(guān)掉所有燈或外出時確保車庫門關(guān)閉。 通過聲音來控制所有智能家居,是一種快速解放雙手,充滿未來感的生活方式。 但是,風(fēng)險猶在,特別是智能鎖。黑客概念圖  一位名叫Brad “RenderMan” Haines的安全研究員(也就是黑客)表示有一個關(guān)...
以下為.h文件:#ifndef __MAX7219_H#define __MAX7219_H#include "stm8s_gpio.h"#include "stm8s.h"#include <iostm8s103f3.h>#include <intrinsics.h>#include "tim1.h" #define uchar unsigned char#define uint unsigned int#define count 8 void Init_MAX7219(void);void MAX7219_Init(void);void Write_Max7219_byte(uchar Data...
11月3日-5日,首屆慕尼黑華南電子展在深圳國際會展中心(寶安新館)拉開序幕。此次展會上,上海瀚薪科技有限公司(簡稱“上海瀚薪”)攜多款重磅碳化硅新品亮相,吸引了眾多參展人士的眼球。上海瀚薪是一家致力于研發(fā)與生產(chǎn)第三代寬禁帶半導(dǎo)體功率器件及功率模塊的高科技企業(yè),也是國內(nèi)唯一一家能大規(guī)模量產(chǎn)車規(guī)級碳化硅MOS管、二極管并規(guī)模出貨給全球知名...
Netflix 近日宣布推出其 Netflix Games 功能,該功能將允許 Netflix 用戶在他們的移動設(shè)備上玩游戲,已支持 Android 平臺。  Netflix 表示它正在開發(fā) iOS 版本的游戲功能,但彭博科技記者 Mark Gurman 表示,蘋果的 App Store 規(guī)則將阻止 Netflix 通過其 App 內(nèi)置功能提供游戲。  蘋果禁止第三方 App 充當(dāng)游戲中心,這...

史海拾趣

問答坊 | AI 解惑

關(guān)于可控硅在關(guān)閉時產(chǎn)生的沖擊

本人用單相可控硅做了一個直流電機調(diào)速板(有過零檢測),可是在關(guān)閉電源(或拔下電源插座)時電機總是要動一下。           不知道哪位高工能幫我一下。先謝謝了!luhechai@yahoo.com.cn…

查看全部問答∨

MSP430_C語言例題

。。。。。。。。。…

查看全部問答∨

基于32位微處理器與實時操作系統(tǒng)(北京航空航天大學(xué)PPT)

本課程介紹了嵌入式系統(tǒng)的前沿技術(shù)和發(fā)展趨勢,重點講述了基于ARM微處理器的嵌入式硬件平臺、嵌入式操作系統(tǒng)(RTlinux)和嵌入式軟硬件系統(tǒng)開發(fā)技術(shù)。 采用理論學(xué)習(xí)和實踐并重的教學(xué)方法,著重培養(yǎng)學(xué)生的實際動手能力,通過熟悉開發(fā)環(huán)境與開發(fā)流程 ...…

查看全部問答∨

打印信息中出現(xiàn)WARN: OALIoCtlHalGetHWEntropy: Buffer too small

打印信息中出現(xiàn)WARN: OALIoCtlHalGetHWEntropy: Buffer too small 之后就是亂碼了 是怎么回事啊 該如何解決這個問題啊 ?…

查看全部問答∨

關(guān)于多線程問題。

我定義了一個線程處理函數(shù): public:     DWORD ThreadProc(LPVOID lpParameter); 這樣定義生成的時候報錯 error C3867: \'CThreadtestDlg::ThreadProc\': function call missing argument list; use \'&CThreadtestDlg::ThreadPro ...…

查看全部問答∨

CMMB 解封裝模式2 復(fù)用塊視頻數(shù)據(jù)的問題

我現(xiàn)在在做cmmb解復(fù)用的東西,cmmb視頻數(shù)據(jù)是用模式2封裝的,H264的nal單元被封裝在復(fù)用凈荷中,文檔中說復(fù)用凈荷和RTP凈荷一一對應(yīng),可是我照文檔中的說法做解出來的H264數(shù)據(jù)播放不了,現(xiàn)在只有北京530的605播放不了,這個臺是清流臺,希望高手能 ...…

查看全部問答∨

如何構(gòu)建一個IRP命令使U盤彈出?

如何構(gòu)建一個IRP命令使U盤彈出? 我想在U盤已經(jīng)插入電腦上的情況下,構(gòu)建一個IRP命令將U盤彈出,但不知道怎么做? 向大家請教…

查看全部問答∨

關(guān)于SJA1000的初始化問題

本人在CAN節(jié)點,之前在BASI模式下,SJA1000是可以正常初始化的;但我現(xiàn)在要用到PELI模式下的自檢功能去檢測單個節(jié)點硬件電路是否正常,但是在PELI模式下SJA1000無法正常讀寫,導(dǎo)致初始化不成功,請高人指點 #define SJA_BaseAdr 0xFF00 //定義sja1 ...…

查看全部問答∨

如何在evc4.2中使用__FUNCTION__這個宏定義!

我想在運行的時候獲得當(dāng)前運行函數(shù)的函數(shù)名,本來有個宏定義__FUNCTION__可以實現(xiàn)的, 但現(xiàn)在編譯不過去,顯示: error C2065: \'__FUNCTION__\' : undeclared identifier 請幫忙,謝謝!…

查看全部問答∨
小廣播
添点儿料...
无论热点新闻、行业分析、技术干货……
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 阿拉善左旗| 湖口县| 景德镇市| 定结县| 象州县| 菏泽市| 都江堰市| 屯门区| 莱西市| 谢通门县| 潞城市| 花莲县| 台东市| 和平区| 安陆市| 额敏县| 黄浦区| 永顺县| 临潭县| 金华市| 大石桥市| 桂阳县| 岐山县| 施甸县| 陵水| 五大连池市| 安康市| 星座| 苏尼特右旗| 佳木斯市| 福州市| 蒲江县| 昭通市| 禹州市| 武鸣县| 深圳市| 始兴县| 靖宇县| 白城市| 民乐县| 达孜县|