这是我写的 程序 有疑问 自己弄了很久没有好

2020-01-23 14:40发布

#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;
sbit  k1=P3^2;
sbit  k2=P3^3;
sbit  L=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[j];
                delay(40);
        }
}

void shudi1()  //水滴
{
        int i;
        for(i=0;i<=8;i++)
        {        P1=shudi[i];
                delay(40);
        }
       
}
void liudq()
{
        int k;
        for(k=0;k<8;k++)
        {
                P1=liud[k];
                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    使用定时产生   求指导    我自己没弄起
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
kcfoo1
1楼-- · 2020-01-24 11:54
比如: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();        
                }}
tangjiaqq
2楼-- · 2020-01-24 17:26
kcfoo1 发表于 2014-5-29 10:53
比如:if(k1) {  i=0;
                 for(;i

谢谢  非常感谢
tangjiaqq
3楼-- · 2020-01-24 20:16
waterghost 发表于 2014-5-28 21:53
按照你写的程序好像也可以出现需要频率  200  400 600  间隔都是200.

是的   200次 *50  =10s    我想使用外部中断(按键)来触发1hz 或者10hz的方波
jssd
4楼-- · 2020-01-25 00:20
 精彩回答 2  元偷偷看……
jssd
5楼-- · 2020-01-25 00:36
看这个,希望能帮到你
感谢lcdmk送的LCD12864。顺手用AT89s52做了个小游戏(原理图+程序)
http://www.amobbs.com/thread-5422394-1-1.html
tangjiaqq
6楼-- · 2020-01-25 04:19
jssd 发表于 2014-5-29 13:24
看这个,希望能帮到你
感谢lcdmk送的LCD12864。顺手用AT89s52做了个小游戏(原理图+程序)
http://www.amob ...

十分感谢   谢谢

一周热门 更多>