|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
關(guān)于77e58的雙串口問題? |
| 作者:ysnow2000 欄目:單片機(jī) |
各位道友: 我的硬件電路是用77e58設(shè)計(jì)的一個雙串口的中繼器,在軟件設(shè)計(jì)的時候,仿真的時候顯示正確,但燒錄的片中之后就顯示不對,到底是怎么回事?? 在軟件設(shè)計(jì)時,對77e58還有什么特殊的要求嗎?麻煩分析一下下面的程序。 /***********************中繼器程序*************************/ #include<77e58.h> #define uint unsigned int #define uCHAR unsigned CHAR sbit DERE0=P1^6; sbit DERE1=P1^5; sbit WDOG=P1^4; uint time_count1; /********************串口及定時器初始化*************/ void serial_init(void) { TMOD=0x21; TH0=(65536-50000)/256; //t0延時時間為50ms TL0=(65536-50000)%256; TH1=0xfd; //定時器t1設(shè)置,串口1設(shè)置波特率9600 TL1=0xfd; SCON1=0x50; //串口1工作在方式1 PCON=0x00; EA=1; ET0=1; //定時器0中斷允許 TR0=1; //啟動定時器 T2CON=0x30; //用定時器2做串口0的波特率發(fā)生器 RCAP2H=0xff; // 11.0592M晶振下,baud rate=9600 RCAP2L=0xd9; TH2=0xff; TL2=0xd9; SCON0=0x50; TR1=1; //啟動定時器1 TR2=1; //啟動定時器2 } /************定時器t0中斷,喂狗程序???????***************/ void time0(void) interrupt 1 { EA=0; TR0 = 0; time_count1++; if(time_count1 == 30) //共1.5s時間 { WDOG=!WDOG; //喂狗 time_count1 = 0; } TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; TR0=1; } /*******************主程序************************/ void main() { time_count1=0; //DS12887_init(); serial_init(); DERE0=0; DERE1=0; while(1) /*用查詢的方法進(jìn)行判斷***********/ { if(RI==1) { RI=0; ACC=SBUF; SBUF1=ACC; DERE0=1; DERE1=1; } else if(TI==1) { TI=0; DERE0=0; DERE1=0; } else if(RI1==1) { RI1=0; ACC=SBUF1; SBUF=ACC; DERE0=1; DERE1=1; } else if(TI1==1) { TI1=0; DERE1=0; DERE0=0; } } } |
| 2樓: | >>參與討論 |
| 作者: mcu_xray 于 2006/9/15 14:15:00 發(fā)布:
re: T2 定時器設(shè)錯了。應(yīng)該是TH2=0xff; TL2=0xdc. |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |