新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機SH79F168串口調式

        單片機SH79F168串口調式

        作者: 時間:2016-11-25 來源:網絡 收藏
        最近在弄中穎最新出來的8bit單片機,開始的時候挺棘手的,網上沒有那些主流芯片那么多資料,一個小問題沒有弄清楚都要調式很久才能搞明白,最慘的在焊接電源的時候還讓我燒了片,弄得我四處找新片子,幸好今天樣片來了,燒之前沒有調通的串口終于調通了,就把程序發出來,讓像我一樣的新手別像無頭蒼蠅一樣到處亂撞,呵呵……

        需要注意的地方:

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

        (1)將接受和發送端口設置為輸入,同時設置為輸入,只將接受端口設置為輸入都也不行;

        (2)波特率的計算跟51單片機不相同,可以仔細看數據手冊怎么計算的;

        (3)RI與TI共用一個中斷,需要由標志去區分(這里跟PIC的中斷有點類似了)。

        程序不周到的地方還望各位見諒,有什么建議盡管提。

        void init_uart()

        {

        P3CR &= 0xF9 ; //這個需要將端口設置為輸入,不然有可能會產生亂碼

        TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload

        TH1 = 0x94 ; //Baud:9600 fosc=16.6MHz

        TL1 = 0x94 ;

        SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr

        PCON = 0x80 ; //SMOD=1;

        IEN0 |= 0x90 ; //Enable Serial Interrupt,EA=1,ES=1;

        TR1 = 1 ; // timer 1 run

        //TI = 1;

        }

        //向串口發送一個字符

        void send_char_com( uint8 ch)

        {

        SBUF = ch;

        while (!TI);

        TI = 0 ;

        }

        //向串口發送一個字符串,strlen為該字符串長度

        void send_string_com( unsigned char *str, unsigned int strlen)

        {

        unsigned int k= 0 ;

        do { send_char_com(*(str + k)); k++; }

        while (k < strlen);

        }

        //接受串口發送過來的數據,并再次發給串口

        void RX_ISR() interrupt 4

        {

        if(RI&&ES)

        {

        send_char_com(SBUF);

        RI=0;

        }

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 当涂县| 隆化县| 德令哈市| 枝江市| 武威市| 罗平县| 行唐县| 苍山县| 北海市| 湄潭县| 固安县| 定州市| 河北区| 朝阳县| 瑞金市| 长葛市| 常山县| 安新县| 邳州市| 安达市| 突泉县| 鄯善县| 天峻县| 云阳县| 贵阳市| 金堂县| 塔河县| 嘉峪关市| 广州市| 和林格尔县| 马鞍山市| 九台市| 曲靖市| 永春县| 凤山县| 乌兰县| 宁晋县| 永和县| 南平市| 德清县| 新丰县|