标题:
我做了一个项目需要用到上位机控制下位机,同时还需要另外一个中断,请问程序怎么....
[打印本页]
作者:
hl5105363
时间:
2018-7-20 12:04
标题:
我做了一个项目需要用到上位机控制下位机,同时还需要另外一个中断,请问程序怎么....
void init() //初始化函数
{
TMOD=0X01; //初始化定时器
TH0=(65536-10)/256; //初值配置
TL0=(65536-10)%256;
EA=1; //开总中断
ET0=1; //定时/计数器T0中断允许
TR0=1;
}
void time0(void) interrupt 1 //定时器中断函数
{
TH0=(65536-10)/256;
TL0=(65536-10)%256;
++i;
if(i>10)
{
i=0;
};
if(i<=zkb)
{
OE=0;
}
else OE=1;
}
这个是我要用到的定时器中断
void UsartConfiguration()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //计数器初始值设置,注意波特率是4800的
TL1=0XF3;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
void Usart() interrupt 4
{
if (RI) //接收到字节
{
cmdIndex = SBUF;
RI = 0; //清零接收中断标志位
SBUF = cmdIndex;//将接收到的数据放入到发送寄存器
cmdArrived = 1;
}
if (TI) //字节发送完
{
TI = 0; //清零发送中断标志位
}
//清除发送完成标志位
}
这个是我用到的通讯中断
单独可以运行,为什么放在一个程序就不行了呢????求大神指点迷津
作者:
小猫猫爱吃鱼
时间:
2018-7-20 18:28
你好!把具体功能要求说一下吧
作者:
HC6800-ES-V2.0
时间:
2018-7-21 09:23
你的程序单独能执行,放一起就不能执行,很正常!!!!!
因为:你是两个程序的复制粘贴,不是程序逻辑的组合。
你的程序中,第一次初始化定时器,TMOD=0x01,第二次又重新设置为TMOD=0x20,不论两个初始化函数谁行谁后,反正只有后一次设置的那个定时器是可用的。
所以,应该两个定时器一次性设置完,这就是程序的逻辑组合了。
当然,如果你不参加考试,可以用STC-ISP程序中的定时器设置功能做函数,那么,得到的两个函数是可以独立运行的,你也可以从它给出的程序中学到如何在第二次设置时,不改变第一次设置——很高级的知识哦。
作者:
wulin
时间:
2018-7-21 16:55
要同时设置TMOD
void Timer_Init() //初始化定时器
{
TMOD=0X21; //定时器0方式1,定时器1方式2
SCON=0X50; //设置串口控制寄存器
PCON=0X80; //波特率加倍
TH0=(65536-10)/256; //定时器0初始值
TL0=(65536-10)%256; //定时器0初始值
TH1=0XF3; //定时器1重载值,注意波特率是4800的设置定时重载值
TL1=0XF3; //定时器1初始值
TR0=1; //开定时器0
TR1=1; //开定时器1
EA=1; //开总中断
ET0=1; //定时/计数器T0中断允许
ES=1; //打开接收中断
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1