久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2529|回復: 7
收起左側

跪求大神指點!還是單片機LED流水燈的花樣控制和速度選擇的問題!

[復制鏈接]
ID:503877 發表于 2019-4-12 22:15 | 顯示全部樓層 |閱讀模式
魚與熊掌不可兼得???上次成功切換花樣,這次不起作用了,倒是控制速度快慢做好了。是不是兩個中斷打架了???請大神幫忙看看!
a4.png
a3.png
a2.png
a1.png

流水燈.rar

2.01 KB, 下載次數: 11

代碼文件

回復

使用道具 舉報

ID:337069 發表于 2019-4-13 07:49 | 顯示全部樓層
中斷0里面switch可以去掉,只要改變a值就行了;
mod函數里面的while(1) 死循環,要加判斷:a值改變的時候要跳出循環。
也可以去掉mod里面的while(1),把那個switch語句放主函數while(1)里
回復

使用道具 舉報

ID:213173 發表于 2019-4-13 15:15 | 顯示全部樓層
本帖最后由 wulin 于 2019-4-13 17:51 編輯

給你寫一個可變速花樣流水燈示例。沒有用任何難懂的語句,你一看就該明白。
#include <reg52.h>
//#include "STC90C5xAD.h"
#include "intrins.h"        
#define u16 unsigned int
#define u8 unsigned char

sbit key1=P3^2;//速度選擇
sbit key2=P3^3;//花樣選擇

//花樣流水燈數組
u8 code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
u8 code table2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u8 code table3[]={0x00,0x81,0xc3,0xe7,0xff,0x7e,0x3c,0x18};
u8 code table4[]={0x18,0x3c,0x7e,0xff,0xe7,0xc3,0x81,0x00};

u8 a=1,b=1,c=0;//速度變量、花樣變量、選通變量
bit d=0;        //計時標志
u16 tt=0;//中斷計數變量

void delay(u16 z)
{
        u16 x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void init()
{
        TMOD=0x01;
        TH0=(65536-1000)/256;//1ms
        TL0=(65536-1000)%256;//1ms
        TR0=1;
        EA=1;
        ET0=1;
}

void main()
{
        init();
        while(1)
        {
                if(!key1)
                {
                        delay(10);
                        if(!key1)
                        {
                                a++;
                                if(a>=5)
                                        a=1;
                                while(!key1);
                        }
                }
                if(!key2)
                {
                        delay(10);
                        if(!key2)
                        {
                                b++;
                                if(b>=5)
                                        b=1;
                                while(!key2);
                        }
                }
                if(d==1)
                {
                        d=0;
                        if(b==1)
                                P1=table1[c];        
                        if(b==2)
                                P1=table2[c];        
                        if(b==3)
                                P1=table3[c];        
                        if(b==4)
                                P1=table4[c];        
                        c++;
                        if(c>=8)
                                c=0;        
                }
        }
}        

void t0() interrupt 1
{
        TH0=(65536-1000)/256;//1ms
        TL0=(65536-1000)%256;//1ms
        tt++;        
        if(tt*a>=300)
        {        
                tt=0;
                d=1;
        }
}
回復

使用道具 舉報

ID:355499 發表于 2019-4-13 16:10 | 顯示全部樓層
中斷0里面switch可以去掉,只要改變a值就行了; mod函數里面的while(1) 死循環,要加判斷:a值改變的時候要跳出循環。 也可以去掉mod里面的while(1),把那個switch語句放主函數while(1)里應該就可以
回復

使用道具 舉報

ID:355499 發表于 2019-4-13 16:11 | 顯示全部樓層
給你寫一個可變速花樣流水燈示例。沒有用如何難懂的語句,你一看就該明白。 #include <reg52.h> //#include "STC90C5xAD.h" #include "intrins.h"         #define u16 unsigned int #define u8 unsigned char  sbit key1=P3^2;//速度選擇 sbit key2=P3^3;//花樣選擇  //花樣流水燈數組 u8 code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; u8 code table2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; u8 code table3[]={0x00,0x81,0xc3,0xe7,0xff,0x7e,0x3c,0x18}; u8 code table4[]={0x18,0x3c,0x7e,0xff,0xe7,0xc3,0x81,0x00};  u8 a=1,b=1,c=0;//速度變量、花樣變量、選通變量 bit d=0;        //計時標志 u16 tt=0;//中斷計數變量  void delay(u16 z) {         u16 x,y;         for(x=z;x>0;x--)                 for(y=110;y>0;y--); }  void init() {         TMOD=0x01;         TH0=(65536-1000)/256;//1ms         TL0=(65536-1000)%256;//1ms         TR0=1;         EA=1;         ET0=1; }  void main() {         init();         while(1)         {                 if(!key1)                 {                         delay(10);                         if(!key1)                         {                                 a++;                                 if(a>=5)                                         a=1;                                 while(!key1);                         }                 }                 if(!key2)                 {                         delay(10);                         if(!key2)                         {                                 b++;                                 if(b>=5)                                         b=1;                                 while(!key2);                         }                 }                 if(d==1)                 {                         d=0;                         if(b==1)                                 P1=table1[c];                                 if(b==2)                                 P1=table2[c];                                 if(b==3)                                 P1=table3[c];                                 if(b==4)                                 P1=table4[c];                                 c++;                         if(c>=8)                                 c=0;                         }         } }          void t0() interrupt 1 {         TH0=(65536-1000)/256;//1ms         TL0=(65536-1000)%256;//1ms         tt++;                 if(tt*a>=300)         {                         tt=0;                 d=1;         } }
回復

使用道具 舉報

ID:453576 發表于 2019-4-13 16:38 | 顯示全部樓層
代碼不夠有條理
回復

使用道具 舉報

ID:503877 發表于 2019-4-15 10:40 | 顯示全部樓層
wulin 發表于 2019-4-13 15:15
給你寫一個可變速花樣流水燈示例。沒有用任何難懂的語句,你一看就該明白。
#include
//#include "STC90 ...

膜拜大神,你的代碼簡單好用!!!
回復

使用道具 舉報

ID:503877 發表于 2019-4-15 10:41 | 顯示全部樓層
chtyise 發表于 2019-4-13 07:49
中斷0里面switch可以去掉,只要改變a值就行了;
mod函數里面的while(1) 死循環,要加判斷:a值改變的時候 ...

謝謝,你的建議可行!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕一区二区三区四区五区 | 久久国产麻豆 | 国产欧美在线观看 | 婷婷色在线 | 九九热这里只有精品6 | av手机在线 | 欧美日韩在线一区二区 | 国产成人高清在线观看 | 欧美精品乱码久久久久久按摩 | 日韩欧美国产不卡 | 成人在线观看免费 | 精品国产一二三区 | 亚洲成人av一区二区 | 色综合久久天天综合网 | 久久电影一区 | 国产资源在线观看 | 国精品一区 | 巨大黑人极品videos精品 | 久久99国产精一区二区三区 | 免费的一级视频 | 亚洲精选久久 | 日韩在线h| 精品免费视频一区二区 | 北条麻妃av一区二区三区 | 亚洲综合无码一区二区 | 毛片a级 | 成人在线视频一区 | 视频1区2区| 色999视频 | 亚洲国产一区二区三区在线观看 | 三极网站| 青青草原综合久久大伊人精品 | 久久av.com| 中文字幕综合 | 中文字幕精品一区二区三区精品 | 成人免费精品视频 | 亚洲综合无码一区二区 | 精品av| 在线欧美一区 | 久久免费视频2 | 成人精品一区亚洲午夜久久久 |