|
请教:
帮我看看这几个问题啊
1:
波特率发生器
是什么啊,
是不是 T0 ,T1 啊
2:
定时器预置数
这里计算出来的是 FA
是
TH1 = FA;
TL1 = FA;
还是
TH1 = 0;
TL1 = FA;
还是
TL1 = FA
TH1 = 0;
谢谢!
3:
T1 给串口做波特率
我还能用 定时器中断 1 吗?
如果不可以的话
(T0 有别的用途)
那么就需要有 3 个定时器的芯片了,是不?
T1 给串口做波特率
是用哪个寄存器来设置的
我可以用 T0 给串口做波涛率不?
那要怎么设置?
如:
void ComInStr() interrupt 4 //串行口中断
{
}
void timer0(void) interrupt 1 //定时器中断 0
{
TH0 = 0xdc; //重载计数初值 每 3ms 中断一次 (原先是 20ms)
TL0 = 0x00;
}
void timer0(void) interrupt 3 //定时器中断 1
{
}
void main()
{
Delaytimes(100,100); //延时
WDT_CONTR = 0x3c; //内部看们
EA = 0;
TMOD = 0x21; //定时器1模式1 定时器0模式1
//---------------------------处理串口中断---------------------------------------
SCON = 0x50; //串行口工作方式1, 10 位异步收发,波特率由定时器控制
PCON |= 0x00;
TL1 = 0xFA;
TH1 = 0xFA; //22.1184M晶振 波特率9600
//---------------------------处理串口中断---------------------------------------
//------------------------------处理中断喂狗------------------------------------
TH0 =0xdc; //预置计数初值,每 5 ms 中断一次 晶振 22.1184
TL0 =0x00;
//------------------------------处理中断喂狗------------------------------------
EA = 1 ; //允许中断
ES = 1 ; //允许串行中断
ET0 = 1; //T/C0 开中断(定时器0/计数器0)
ET1 = 0; //T/C0 开中断(定时器0/计数器0)
TR1=1; //启动定时器1/计数器1
TR0 = 1; //启动定时器0/计数器0
while(1)
{
;
}
}
|
|