ch552 UART0和TIME0同時使用的問題

項目需要同時使用UART0,和TIME0,TIME2。UART0已經(jīng)使用了TIME1自動重載定時器。在單獨使用UART0的示例代碼的時候是可以的,但是加上TIME0后,發(fā)現(xiàn)UART0就失效了。

#include?".\Public\CH554.H"
#include?".\Public\Debug.H"
#include?".\Public\Timer.H"
#include?"stdio.h"
#include?

#pragma??NOAREGS
?

UINT8?dat?=?2;
UINT8?flag?=?0;
?
?
void?UART0Interrupt(?void?)?interrupt?INT_NO_UART0
{
????if(RI)
????{
????????dat?=?SBUF;
????????CH554UART0SendByte(dat);
????????RI?=?0;
????????flag?=?1;
????}
}

void?initTime(?void?)
{?
?
		
???mTimer0Clk12DivFsys();	???????????????????????????????????????????????????//T0定時器時鐘設置
????mTimer_x_ModInit(0,2);?????????????????????????????????????????????????????//T0?定時器模式設置
????mTimer_x_SetData(0,0x5555);	???????????????????????????????????????????????//T0定時器賦值
????mTimer0RunCTL(1);??????????????????????????????????????????????????????????//T0定時器啟動	
????ET0?=?1;???????????????????????????????????????????????????????????????????//T0定時器中斷開啟		
????EA?=?1;
?


}
void?main(?)
{
????CfgFsys(?);????????????????????????????????????????????????????????????????//CH554時鐘選擇配置
????mDelaymS(20);
????mInitSTDIO(?);
???initTime();

????while(1)
????{?
????????if(flag)
????????{
?
????????????flag?=?0;
????????}

????????mDelaymS(100);
?????????
????}
}
void	mInitSTDIO(?)
{
????UINT32?x;
????UINT8?x2;?

????SM0?=?0;
????SM1?=?1;
????SM2?=?0;???????????????????????????????????????????????????????????????????//串口0使用模式1
???????????????????????????????????????????????????????????????????????????????//使用Timer1作為波特率發(fā)生器
????RCLK?=?0;??????????????????????????????????????????????????????????????????//UART0接收時鐘
????TCLK?=?0;??????????????????????????????????????????????????????????????????//UART0發(fā)送時鐘
????PCON?|=?SMOD;
????x?=?10?*?FREQ_SYS?/?UART0_BUAD?/?16;???????????????????????????????????????//如果更改主頻,注意x的值不要溢出????????????????????????????
????x2?=?x?%?10;
????x?/=?10;
????if?(?x2?>=?5?)?x?++;???????????????????????????????????????????????????????//四舍五入

????TMOD?=?TMOD?&?~?bT1_GATE?&?~?bT1_CT?&?~?MASK_T1_MOD?|?bT1_M1;??????????????//0X20,Timer1作為8位自動重載定時器
????T2MOD?=?T2MOD?|?bTMR_CLK?|?bT1_CLK;????????????????????????????????????????//Timer1時鐘選擇
????TH1?=?0-x;?????????????????????????????????????????????????????????????????//12MHz晶振,buad/12為實際需設置波特率
????TR1?=?1;???????????????????????????????????????????????????????????????????//啟動定時器1
????//TI?=?1;
????REN?=?1;???????????????????????????????????????????????????????????????????//串口0接收使能
	?EA=1;//全局中斷使能控制位,該位為?1?并且?E_DIS?為?0?則允許中斷;該位為?0?屏蔽所有中斷請求
	ES=1;?//異步串口?0?中斷使能位,該位為?1?允許?UART0?中斷;為?0?屏蔽
?
}

請問我能不能同時使用uart0 和 time0 time2,為什么UART同時使用時會失效?

解決了:定時器工作在不同的方式就可以了。


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频