标题:
15f2k60s2单片机的控速程序问题
[打印本页]
作者:
可能否
时间:
2018-10-6 11:14
标题:
15f2k60s2单片机的控速程序问题
写的程序在15上不能用 帮看一下
/**************************************/
#include <REGX51.H>
sbit M1A=P0^0;
sbit M1B=P0^1;
sbit M2A=P0^2;
sbit M2B=P0^3;
sbit ENA0=P1^4;
sbit ENA1=P1^5;
char R,S;
void main()
{
M1A=1;
M1B=0;
M2A=1;
M2B=0;
ENA0=1;
ENA1=1;
TMOD=0x01;
TH0=64536/256;
TL0=64536%256;
ET0=1;
EA=1;
TR0=1;
R=8;
R--;
while(1);
}
void sudu() interrupt 1
{
TH0=64536/256;
TL0=64536%256;
if(R==1)
{
ENA0=~ENA0;
ENA1=~ENA1;
if(ENA0==1)
{R=4;}
else{R=8;}
}
}
作者:
sxhwdz
时间:
2018-10-6 13:13
不是15的原因,程序本身就有问题。
初始化的时候 R=8;R--;R 的值应该是 7;而在定时器中断里面只有 R=4; R=8;两次赋值与一次 R==1 的判断,运行中 R是不可能等于 1 的。
逻辑上判断,应该是语句 R--;放错了位置,应该放在定时器中断内。
作者:
可能否
时间:
2018-10-6 16:33
sxhwdz 发表于 2018-10-6 13:13
不是15的原因,程序本身就有问题。
初始化的时候 R=8;R--;R 的值应该是 7;而在定时器中断里面只有 R=4 ...
是的是的,我这个循环逻辑写错了。
TMOD=0x01;
TH0=64536/256;
TL0=64536%256;
ET0=1;
EA=1;
TR0=1;
请问这几句也可以打开15f2k60s2的内部定时器和中断吗?
15也能用51的头文件吧
作者:
sxhwdz
时间:
2018-10-7 11:29
ET0=1 打开了定时器0的中断,EA=1 是打开系统的总中断开关,TR0=1 定时器0开始计数,这些条件满足,定时器开始工作,并能产生中断。
15系列的功能更多,使用了更多的特殊功能寄存器,如果要使用这些功能,就需要15的头文件对这些寄存器进行定义。如果只使用普通的功能,用51的头文件也可以的。
作者:
2393013730
时间:
2018-10-7 16:06
TMOD=0x01;
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1