
#define uchar unsigned char
sbit c10=P1^0
sbit c11=P1^1
sbit c12=P1^2
sbit c13=P1^3
uchar led1,led3
void delay(uchar a)
{
uchar i,j
for(i=0i<ai++)
for(j=0j<120j++)
}
main()
{
uchar keyval=0xff
led1=0xfe
led3=0xf8
while(1)
{
if(c10==0)
{
delay(10)
if(c10==0)
{
while(c10==0)
keyval=0
}
}
if(c11==0)
{
delay(10)
if(c11==0)
{
while(c11==0)
keyval=1
}
}
if(c12==0)
{
delay(10)
if(c12==0)
{
while(c12==0)
keyval=2
}
}
if(c13==0)
{
delay(10)
if(c13==0)
{
while(c13==0)
keyval=3
}
}
switch(keyval)
{
case 0:
P0=led1
led1=(led1<<1)|0x01
if(led1==0xff)led1=0xfe
delay(100)
case 1:
P0=led1
led1=(led1>>1)|0x80
if(led1==0xff)led1=0x7f
delay(100)
case 2:
P0=led3
led3=(led3<<1)|0x01
if((led3&0xf0)==0x30)led3=0x3e
if((led3&0xf0)==0x70)led3=0x7c
if((led3&0xf0)==0xf0)led3=0xf8
break
case 3:
P0=led3
led3=(led3>>1)|0x80
if((led3&0x0f)==0x0c)led3=0x7c
if((led3&0x0f)==0x0e)led3=0x3e
if((led3&0x0f)==0x0f)led3=0x1f
break
default:break
}
}
}
也许很快就有其他人发出程序代码来告诉你哪里有问题了,我就不贴代码了,主要告诉你方法。
1、点击工具栏上面的“start/stop debug session”按钮,进入仿真页面。
2、点击Peripherals选项,在下拉菜单选择“IO-port”,继续选择Port 伏圆氏1。
3、点击关掉Disassembly窗口,这个是汇编的,就不看了。 __
4、在新出现的仿真工具栏里,有一个箭头跳过花括号的图标 {} ↓ ,点击它或者按F10,你就可以执行单步仿真了。
5、在左边还有个sec 寄存器,可以看到执行到当期指令时所花的时间。不过首先你要去project option里面把晶腔简振频率设置成和你单片机一样的。
6、选择变量i,右键,点击add to watch 1。这里是看变量i的变化的。
7、一步一步执行下来,你可以知道单片机是怎么执行指令的,你的IO输出到底是缺散什么个样子的。反正肯定不是你现在所理解的,执行一遍就不执行了,呵呵。
LED灯右移到最右边后向左移时是这样的:右移一位→第二个延时程序→第埋族一个延时程序→右移右移一位→第二个延时程序→第一个延时程序戚液迟,这样不断循环,循环到最左边,就开始了右移的程序。这样左移的延迟大高李一点的!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)