12c5a60s2 这个芯片 有2个串口 想让两个在一个程序中使用 一个接受 一个发送 过程是像下边这样吗
???
A接受了 在A送给B 然后B接收 再B发送出去??
要是这种情况就是2个串口都有接受发送过程了??!!
第二个问题
void T_Init(void)//定时中断初始化
{
TMOD = 0x11;//T1使用定时模式,工作模式1,无门控位T0使用定时模式,工作模式1,无门控位
TH0 = 0xD8;;// 为T0填入初值,定时时间10ms
TL0 = 0xF0;
TH1 = 0xD8;;// 为T1填入初值,定时时间10ms
TL1 = 0xF0; TR0 = 1;// 启动T0
TR1 = 1;// 启动T1
ET0=1;//开T0中断
ET1=1;//开T1中断
}
///////功能:串口初始化,波特率9600,方式1/////////
void Init_Com(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd; TR1 = 1;
}
这个斑竹帮我解答了一些 但是还是不明白
我看见下面的情况来
TI的 不一样啊 这个是肯定不一样吧
TH1 = 0xD8;;// 为T1填入初值,定时时间10ms
TL1 = 0xF0;
串口的一样 这个能不一样吗???
TH1 = 0xFd;
TL1 = 0xFd;
这如何是好??
此帖出自
小平头技术问答
#define uint unsigned int
#define uchar unsigned char
unsigned char dat; //串口
unsigned char g_count;// 全局变量,timer1_int函数使用
unsigned char g_second;// 全局变量,timer0_int函数使用
sbit p1=P1^1;// 先200ms灭后800ms亮指示灯
sbit p2=P1^2;// 先800ms亮后200ms灭指示灯
sbit p3=P1^3; //串口数据接收灯
bit flag0=0;
bit flag1=0;
void T_Init(void)//定时中断初始化
{
TMOD = 0x11;//T1使用定时模式,工作模式1,无门控位T0使用定时模式,工作模式1,无门控位
TH0 = 0xD8;;// 为T0填入初值,定时时间10ms
TL0 = 0xF0;
TH1 = 0xD8;;// 为T1填入初值,定时时间10ms
TL1 = 0xF0;
TR0 = 1;// 启动T0
TR1 = 1;// 启动T1
ET0=1;//开T0中断
ET1=1;//开T1中断
}
void main()
{
g_count=0;
g_second=0;
T_Init();
EA=1;
while(1);
}
/* T1溢出中断处理函数*/
void timer1_int() interrupt 3 using 3 // T1溢出中断,使用工作组3
{
TH1 = 0xD8;// 重新填入初值
TL1 = 0xF0;
g_count++;
if(flag0 == 0 && g_count == 20)// 先灭200ms
{
g_count = 0;// 清0
p1=0;
flag0=1;
}
else if(flag0 == 1 && g_count == 80)// 后亮800ms
{
g_count = 0;// 清0
p1=1;
flag0=0;
}
}
/* T0溢出中断处理函数 */
void timer0_int() interrupt 1 // T0溢出中断,
{
TH0 = 0xD8;// 重新填入初值
TL0 = 0xF0;
g_second++;
if(flag1 == 0 && g_second == 80)// 先亮800ms
{
g_second = 0;// 清0
p2=1;
flag1=1;
/* 就是这里了 我想的是在这里用串口输入数据显示
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
if ( RI ) //扫描判断是否接收到数据,
{
dat = SBUF; //接收数据SBUF赋与dat
p3=0;//串口数据接收灯亮
RI=0; //RI 清零。
SBUF = dat;//返回显示
}
*/
}
else if(flag1== 1 && g_second == 20)// 后灭200ms
{
g_second = 0;// 清0
p2=0;
flag1=0;
}
}
一周热门 更多>