新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 使用51的定時(shí)器模擬串口

        使用51的定時(shí)器模擬串口

        作者: 時(shí)間:2016-11-29 來源:網(wǎng)絡(luò) 收藏
        //-----------------------------------------//Timer interrupt routine for UARTvoid tm1() interrupt 3 using 1{if (RING){if (--RCNT == 0){RCNT = 3;//直到我看到了這里……//reset send baudrate counterif (--RBIT == 0){RBUF = RDAT; //save the data to RBUFRING = 0;//stop receiveREND = 1;//set receive completed flag}else//這TM不是坑爹吧{RDAT >>= 1;if (RXB) RDAT |= 0x80;//shift RX data to RX buffer}}}else if (!RXB){RING = 1;//set start receive flagRCNT = 4;//initial receive baudrate counterRBIT = 9;//initial receive bit number (8 data bits + 1 stop bit)}if (--TCNT == 0){TCNT = 3;//reset send baudrate counterif (TING)//judge whether sending{if (TBIT == 0){TXB = 0;//send start bitTDAT = TBUF; //load data from TBUF to TDATTBIT = 9;//initial send bit number (8 data bits + 1 stop bit)}else{TDAT >>= 1;//shift data to CYif (--TBIT == 0){TXB = 1;TING = 0;//stop sendTEND = 1;//set send completed flag}else{TXB = CY;//write CY to TX port}}}}}//-----------------------------------------//initial UART module variablevoid UART_INIT(){TING = 0;RING = 0;TEND = 1;REND = 0;TCNT = 0;RCNT = 0;}

        唉,串口之爭告一段落。我還是希望有硬件串口。

        本文引用地址:http://www.104case.com/article/201611/323424.htm

        另外就是我實(shí)在不知道詭異的STC ISP串口是怎么在11.0592下面跑到115200的。本來加倍是溢出/16,那么它就算加倍的加倍,也就是/8……既然軟件模擬不可能實(shí)現(xiàn)如此高的波特率。而且6T模式能到230400,我就認(rèn)為他的SFR有串口四倍速選項(xiàng)。可惜老妖沒有拿出來吹,或者說他也不知道。ISP程序也讀不出。實(shí)在不知道是為啥……

        順便說一句,STC15系列的片子只要RAM越界就復(fù)位……

        順便提一個(gè)老妖的坑爹之處:

        ISP定時(shí)常數(shù)不在表格中寫出來……

        而是:

        /*Define ISP/IAP/EEPROM operation const for IAP_CONTR*///#define 	ENABLE_IAP 	 0x80//if SYSCLK<30MHz//#define 	ENABLE_IAP 	 0x81//if SYSCLK<24MHz#define 	 ENABLE_IAP 	 0x82//if SYSCLK<20MHz//#define 	ENABLE_IAP 	 0x83//if SYSCLK<12MHz//#define 	ENABLE_IAP 	 0x84//if SYSCLK<6MHz//#define 	ENABLE_IAP 	 0x85//if SYSCLK<3MHz//#define	 ENABLE_IAP 	 0x86//if SYSCLK<2MHz//#define	 ENABLE_IAP 	 0x87//if SYSCLK<1MHz


        暈死……但是我為什么發(fā)現(xiàn)似乎0×83這個(gè)ISP常數(shù)到處可以用,1M的RC設(shè)置照樣0×83下……

        本文轉(zhuǎn)自:http://www.rwzy.co.cc


        上一頁 1 2 下一頁

        關(guān)鍵詞: 51定時(shí)器模擬串

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 邳州市| 大同县| 育儿| 三河市| 南召县| 库尔勒市| 连江县| 宁南县| 吉木乃县| 斗六市| 望都县| 华阴市| 六枝特区| 台北县| 比如县| 皋兰县| 永宁县| 夏邑县| 扎赉特旗| 克什克腾旗| 桦甸市| 西乡县| 江山市| 嘉兴市| 宜兰县| 黄浦区| 盐池县| 漳浦县| 德格县| 宁河县| 商水县| 德江县| 阜康市| 西峡县| 崇信县| 喀什市| 临洮县| 尖扎县| 久治县| 炉霍县| 长寿区|