TA的每日心情 | 郁闷 2024-4-11 17:03 |
---|
签到天数: 12 天 [LV.3]偶尔看看II
注册会员
- 积分
- 80
|
楼主 |
发表于 2024-4-11 22:04:16
|
显示全部楼层
我今天试着改进了一下代码,虽然可以灭了但是好像逻辑不太对,出来的结果不是想要的
#include <stc8h.h> //包含支持STC8H系列单片机的头文件
#include <intrins.h> //I/O口初始化文件
#include <gpio.c> //设置为准双向口
#define uchar unsigned char
#define uint unsigned int
uint counter=0; //设置计数变量
uchar a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0;
sbit num0=P2^7;
sbit num1=P2^6;
sbit num2=P2^5;
sbit num3=P2^4;
sbit num4=P2^3;
sbit num5=P2^2;
sbit num6=P2^1;
sbit num7=P2^0;
void Timer0_init(void)
{
TMOD=0x0C;
TH0=0x00;
TL0=0x00;
TR0=1;
}
void main(void)
{
uint temp1,temp2;
gpio();
Timer0_init();
while(1)
{
for(;;)
{
////////////////////////////////////////////////////////////////
//控制P2端口
if(counter%2==0) num0=1; //如果用num0 = !num0,那么这个灯就只能亮,不会灭
else num0=0;
if(counter%2 == 0 && counter > 0)
{
b+=1; //如果到达2的倍数,控制P2.6亮或灭,否则,P2.6保持(后面以此类推)
if(b%2==1)
num1 = 0;
else
num1=1;
}
if(counter%4 ==0 && counter > 0)
{
c+=1;
if(c%2==1)
num2=0;
else
num2=1;
}
if(counter%8 == 0 && counter > 0)
{
d+=1;
if(d%2==1)
num3=0;
else
num3=1;
}
if(counter%16 == 0 && counter > 0)
{
e+=1;
if(e%2==1)
num4=0;
else
num4=1;
}
if(counter%32 == 0 && counter > 0)
{
f+=1;
if(f%2==1)
num5=0;
else
num5=1;
}
if(counter%64 == 0 && counter > 0)
{
g+=1;
if(g%2==1)
num6=0;
else
num6=1;
}
if(counter%128 == 0 && counter > 0)
{
h+=1;
if(h%2==1)
num7=0;
else
num7=1;
}
////////////////////////////////////////////////////////////////
temp1=TL0;
temp2=TH0;
counter=TL0;
}
}
}
|
|