2、其次编写LOGO!PLC的程序,设置一个10秒的延时程序,控制第一个彩灯亮10秒后自动熄灭,然后再设置另外一个10秒的延时程序,控制第二个彩灯亮10秒后自动熄灭,以此类推。
3、编写LOGO! PLC的循环程序,让程序可以一直执行,实现四个彩灯交替闪烁的效果。
C语言#include
#define
uint
unsigned
int
#define
uchar
unsigned
char
sbit
p27=P2^7//数码管位选端定义
uchar
c,i
//数码管译码表
unsigned
char
code
NumDecode[]
=
{
0XC0,//0
0XF9,//1
0XA4,//2
0XB0,//3
0X99,//4
0X92,//5
0X82,//6
0XF8,//7
0X80,//8
0X90,//9
}
void
main()
{
i=0//10秒计时设置
c=0//中断次数计数
p27=1//数码管位选端关闭
TMOD=1//设置定时器0为工作方式1
TH0=(65536-46080)/256//定时50ms高8位求模
TL0=(65536-46080)%256//定时50ms低8位求余
EA=1//开总中断
ET0=1//定时器0中断
TR0=1//启动定时器0
while(1)
{
if(c==20)//50ms中断20次
{
c=0
i++//倒计时总数每秒减1
}
if(i<10)
{
p27=0//数码管位选选通
P0=NumDecode[i]//显示数据
}
else
//循环计时设置
{
i=0
}
}
}
void
timer0()
interrupt
1//定时器0中断入口
{
TH0=(65536-46080)/256//定时器重新赋初值
TL0=(65536-46080)%256
c++//中断次数
}
如果是精确的话,需要用定时器,不是太精确的话,软件延时就可以。假如12M晶振
void delay10s()
{
int i,j
for(i=0i<10000i++)
for(j=0j<120j++)
}
void delay10s()
{
unsigned char i
TMOD=0x01
TH0=(65536-50000)/256
TL0=(65536-50000)%256
TR0=1
i=200
while(i--)
{
while(TF0==0)
TF0=0
TH0=(65536-50000)/256
TL0=(65536-50000)%256
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)