这是我写的 程序 有疑问 自己弄了很久没有好
#include <reg51.h>#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar shudi[]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
uchar lamu[]={0x18,0x24,0x42,0x81,0x81,0x42,0x24,0x18};
uchar liud[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uint i,q;
sbitk1=P3^2;
sbitk2=P3^3;
sbitL=P1^0;
void delay(int a)
{
int b;
for(a;a>0;a--)
for(b=225;b>0;b--);
}
void lamu1()//拉幕
{ int j;
for(j=0;j<8;j++)
{
P1=lamu;
delay(40);
}
}
void shudi1()//水滴
{
int i;
for(i=0;i<=8;i++)
{ P1=shudi;
delay(40);
}
}
void liudq()
{
int k;
for(k=0;k<8;k++)
{
P1=liud;
delay(30);
}
}
void chushihua()
{
TMOD=0x11;
EA=1;
EX0=1;EX1=1;
IT0=1;IT1=1;
ET0=1;ET1=1;
TR0=1;TR1=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
void main()
{
chushihua();
while(1)
{
i=0;
for(;i<200;)
{
shudi1();
}
for(;i<400;)
{
lamu1();
}
for(;i<600;)
{
liudq();
}
}
}
void zd() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
i++;
}
void zd1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
q++;
}
我想添加一个功能 使用外部中断 (按键按下时K1执行 1hz 按键按下K2执行10hz) 1hz和10hz 使用定时产生 求指导 我自己没弄起
一开始代码这么大一串,估计没几个人有耐心看完吧@ 尤其看到 拉幕、初始化、中断的拼音,哈哈。 楼主给解释解释,什么TM的liudq是什么意思? shudi
lamu
liud
chushihua
哈哈。 按照你写的程序好像也可以出现需要频率200400 600间隔都是200. 加个按键标识位,k1时执行i k2时执行q, 比如:if(k1) {i=0;
for(;i<200;)
{
shudi1();
}
for(;i<400;)
{
lamu1();
}
for(;i<600;)
{
liudq();
}
}
if(k2){q=0;
for(;q<200;)
{
shudi1();
}
for(;q<400;)
{
lamu1();
}
for(;q<600;)
{
liudq();
}} kcfoo1 发表于 2014-5-29 10:53
比如:if(k1) {i=0;
for(;i
谢谢非常感谢 waterghost 发表于 2014-5-28 21:53
按照你写的程序好像也可以出现需要频率200400 600间隔都是200.
是的 200次 *50=10s 我想使用外部中断(按键)来触发1hz 或者10hz的方波 不知道为什么要使用那么多中断来计时,个人觉得一个就够,所有用的计时的都用一个标志位,时间到就标志,用了就清。反正你这个也不用非常实时吧。 看这个,希望能帮到你
感谢lcdmk送的LCD12864。顺手用AT89s52做了个小游戏(原理图+程序)
http://www.amobbs.com/thread-5422394-1-1.html
jssd 发表于 2014-5-29 13:24
看这个,希望能帮到你
感谢lcdmk送的LCD12864。顺手用AT89s52做了个小游戏(原理图+程序)
http://www.amob ...
十分感谢 谢谢
页:
[1]