xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 2KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-07
  • 語言: 其他
  • 標(biāo)簽: stm8??uart??IO??模擬??

資源簡(jiǎn)介

STM8S003F只有一個(gè)串口,項(xiàng)目中需要兩個(gè)串口,因此采用IO口模擬一個(gè)串口。 此程序也是經(jīng)理給的,經(jīng)過測(cè)試可以用,不過需要耐心閱讀一下程序,理解串口程序的思路,能夠正確讀寫串口溫度傳感器的溫度值。

資源截圖

代碼片段和文件信息

#include?“suart.h“
//#include?“mh-z14.h“

SUART?suart;

static?void?set_rx_input(void)
{
????PD_DDR?&=?~(0x1?<????PD_CR1?|=?(0x1?<}

static?void?set_tx_output(void)
{
????PD_DDR?|=?(0x1?<????PD_CR1?|=?(0x1?<????PD_CR2?|=?(0x1?<}

void?suart_init(void)
{
????set_rx_input();
????set_tx_output();
????TX?=?1;
????
????memset(&suart?0?sizeof(SUART));
????suart.baudrate?=?9600;
????suart.mode?=?RX_MODE;
????suart.rxnum?=?9;
}

void?rx_int_switch(u8?flag)
{
????if?(flag)?{
????????PD_CR2?|=?(0x1?<????????EXTI_CR1?&=?(u8)(~MASK_EXTI_CR1_PDIS);
????????EXTI_CR1?|=?(u8)((u8)(0x02)?<????}?else?{
????????PD_CR2?&=?~(0x1?<????}
}

void?tx_input_data(u16?data)
{
????u16?i?=?suart.txbuf.num?txchar?=?0;
????
????txchar?=?data;??//data?bit:?8bits
????txchar?<<=?1;???//start?bit:?1bit????????
????//parity?bit:?no
????txchar?|=?(0x3?<????
????suart.txbuf.data[i]?=?txchar;
????suart.txbuf.num++;
}

void?tx_handler(void)
{
????u32?data?=?0?a?=?0;
????
????a?=?(suart.txbuf.data[suart.txbuf.txcnt]?>>?suart.txbuf.txbit);???//移位獲取需要發(fā)送的電平
????data?=?(a?&?0x01);
????if?(data?==?0x01)
????????TX?=?1;
????else
????????TX?=?0;
????
????suart.txbuf.txbit++;
????if?(suart.txbuf.txbit?==?11)?{????//發(fā)送完停止位進(jìn)行判斷是否關(guān)閉定時(shí)器
????????suart.txbuf.txbit?=?0;
????????suart.txbuf.txcnt++;
????????
????????if?(suart.txbuf.txcnt?==?suart.txbuf.num)?{?//當(dāng)發(fā)送緩沖隊(duì)列中數(shù)據(jù)全部發(fā)完時(shí)初始化相關(guān)資源
????????????suart.txbuf.txcnt?=?0;
????????????suart.txbuf.num?=?0;
????????????
????????????tim2_switch(OFF?0?TX_MODE);
????????????rx_int_switch(ON);
????????}
????}
}

static?u8?get_rx_bit(void)
{
????u8?i?=?0?bitsum?=?0;
????
????for?(;?i?????????bitsum?+=?RX;
????
????if?(bitsum?????????return?0;
????else
????????return?1;
}

void?rx_handler(void)
{
????u8?averbit?=?0;
????
????averbit?=?get_rx_bit();?//連續(xù)采三次電平值,根據(jù)最大比合并,得出電平值
????
????if?(suart.rxbuf.rxbit?==?0)?{
????????if?(averbit)????
????????????rx_enable();???
????????else???
????????????tim2_switch(ON?suart.baudrate?RX_MODE);
????????
????????suart.rxbuf.rxbit++;
????}?else?{
????????if?(suart.rxbuf.rxbit?????????????suart.rxbuf.SBUF?>>=?1;??
????????????
????????????if?(averbit)
????????????????suart.rxbuf.SBUF?|=?(0x1?<????????????
????????????suart.rxbuf.rxbit++;
????????}?else?{??//stop?bit
????????????tim2_switch(OFF?0?RX_MODE);
????????????if?(averbit)?{??
????????????????suart.rxbuf.data[suart.rxbuf.num]?=?suart.rxbuf.SBUF;
????????????????suart.rxbuf.num++;
????????????}
????????????
????????????if?(suart.rxnum?!=?suart.rxbuf.num)
????????????????rx_enable();?
????????????else?{?
#if?0
????????????????u8?i?=?0;
????????????????for?(;?i?????????????????????tx_input_data(suart.rxbuf.data[i]);
????????????????tx_ena

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????3714??2017-02-26?14:40??suart.c
?????文件?????????904??2016-06-27?08:51??suart.h

評(píng)論

共有 條評(píng)論