登录
首页 单片机论坛
回帖 发帖
正文

主题:流水灯每走一圈速度越来越快,。我程序出错。请帮忙看看

点击:1649 回复:12

#include
#define uchar unsigned char
sbit led=P1;
uchar num=0,speed=0,t=0;
uchar code table[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
void main()
{
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
while(1)
{  
P1=table[num];
} }

void T0_time() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
speed++;
switch(t)
{
case 0:
if(speed==20)
num++;
break;
case 1:
if(speed==18)
num++;
 break;
case 2:
if(speed==16)
num++;
break;
case 3:
if(speed==14)
num++;
break;
case 4:
if(speed==12)
num++;
break;
case 5:
if(speed==10)
num++;
break;
case 6:
if(speed==8)
num++;
break;
case 7:
if(speed==6)
num++;
break;
case 8:
if(speed==4)
num++;
break;
case 9:
if(speed==2)
num++;
break;
}
if(num==8)
{
num=0;


t++;
if(t==speed)
我程序switch(t)这样写才对;   写成switch(t):就错为什么的?
sbit led=P1;写成sfr led=P1;就错为什么
11-12-27 20:26
咋是日语那?
11-12-27 21:27
c语言,兄弟
最后修改:2011/12/27 21:42:14
11-12-27 21:37

我程序switch(t)这样写才对; 写成switch(t):就错为什么的?switch是开关语句,每个语句都有自己的表达式
sbit led=P1;写成sfr led=P1;就错为什么
都是些固定格式没有那么多为什么的
11-12-27 22:21
该用户被锁定!
11-12-27 22:48
switch(t):是语法错误,不能加冒号,类似if(……):也会出错。
sbit led=P1;写成sfr led=P1;就错为什么——注意句尾的分号“;”与“;”西文与中文的区别,用中文符号时编译就出错。
11-12-28 11:38
sbit 好像是位定义吧!P1是一个字节的寄存器,它好像是有8个位吧!
只用过sbit led=P1^0;呵呵!有可能是我见得太少了!
11-12-28 17:19
sfr 是直接寻址的   不能写 过sbit led=P1^0;  而是 sfr P1=0x90;
最后修改:2011/12/29 13:08:53
11-12-29 11:42
8楼
该帖内容不符合相关规定!
11-12-29 11:59
是的这样看比较烦…以后会注意的…
11-12-29 19:06

上一页下一页

工控新闻

更多新闻资讯