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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2360|回復: 8
打印 上一主題 下一主題
收起左側

幫忙分析一下為何單片機流水燈程序貌似不執行呢?流水燈只在初始狀態,不會流動

[復制鏈接]
跳轉到指定樓層
樓主
單片機源程序如下:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit aa=P2^0;
sbit bb=P2^1;
sbit cc=P2^2;//74HC138位掃描控制位
uchar cnt=0;//定時器0中斷計數
uchar i=0;//位掃描索引
uint sum=0;//定時器1中斷計數
uchar k;
uchar temp=0xfe;//流水燈賦初值,第1個燈點亮
unsigned long  sec=765432;
uchar code Ledchar[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                                      0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//數碼管碼表
uchar Ledbuff[]={0x00,0x00,0x00,0x00,0x00,0x00};//啟動時數碼管不亮
void Leddisplay();
void LedSL();

void main()
{
TMOD=0x11;
EA=1;
ET0=1;
TR0=1;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;

ET1=1;
TR1=1;
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;

P3=temp;
while(1)
         {
         Leddisplay();
         LedSL();
        }
}
void Leddisplay()
{
if(cnt==10)//每0.1s刷新一次
                 {
                 cnt=0;
                 sec--;
                 if(sec==765398) //當sec=765398時關閉定時器0
                         {
                         TR0=0;
                        }
                 }
         Ledbuff[0]=Ledchar[sec%10];
         Ledbuff[1]=Ledchar[sec/10%10];
         Ledbuff[2]=Ledchar[sec/100%10];
         Ledbuff[3]=Ledchar[sec/1000%10];
         Ledbuff[4]=Ledchar[sec/10000%10];
         Ledbuff[5]=Ledchar[sec/100000%10];
}

void LedSL()//流水燈程序
{
         if(sum==1000)
                {
                 sum=0;
                 temp=temp<<1;
                 P3=temp;
                }
        
}
void T0_time() interrupt 1//定時10ms
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
cnt++;
}


void T1_time() interrupt 3//定時1ms
{
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
sum++;
P0=0x00;
switch(i)
                 {
                 case 0 :aa=1;bb=1;cc=1;i++;P0=Ledbuff[0];break;
             case 1 :aa=0;bb=1;cc=1;i++;P0=Ledbuff[1];break;
             case 2 :aa=1;bb=0;cc=1;i++;P0=Ledbuff[2];break;
             case 3 :aa=0;bb=0;cc=1;i++;P0=Ledbuff[3];break;
             case 4 :aa=1;bb=1;cc=0;i++;P0=Ledbuff[4];break;
             case 5 :aa=0;bb=1;cc=0;i=0;P0=Ledbuff[5];break;
             default:break;
                }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:930066 發表于 2022-5-1 12:31 來自觸屏版 | 只看該作者
電路看看
回復

使用道具 舉報

板凳
ID:121859 發表于 2022-5-1 15:21 | 只看該作者
if(sum==1000)改為 if(sum>=1000)試試。
回復

使用道具 舉報

地板
ID:979299 發表于 2022-5-1 22:26 | 只看該作者
void LedSL()//流水燈程序
{
        P3=temp;
        if(sum==1000)
        {
                sum=0;
        }
        temp=~(1<<k++);
        if(k==8)
        k=0;
}
回復

使用道具 舉報

5#
ID:213173 發表于 2022-5-2 07:40 | 只看該作者
由于主循環周期遠大于中斷周期1ms,sum不知是什么數了。if(sum==1000)會跑飛,改if(sum>=1000)。temp=temp<<1;后低位要補1,否則一輪就全亮了。

  1. void LedSL()//流水燈程序
  2. {
  3.         if(sum>=1000)
  4.         {
  5.                 sum=0;
  6.                 temp=temp<<1|1;
  7.                 if(temp==0xff)
  8.                         temp=0xfe;
  9.                 P3=temp;
  10.         }  
  11. }
復制代碼
回復

使用道具 舉報

6#
ID:904095 發表于 2022-5-2 07:57 | 只看該作者

開發板  流水燈 很久才動
回復

使用道具 舉報

7#
ID:161164 發表于 2022-5-2 15:33 | 只看該作者
8051只是8位單片機
沒有硬件乘除法的情況下
計算32位(Long)的乘除取余需要另外附加很多的步驟


單單以上幾句在12Mhz的速度運行下就要6.822毫秒
令主循環的時間超出了定時器1的中斷時間
于是在第N個循環sum=997
在第N+1個循環sum=1003了
sum==1000就永不成立了


回復

使用道具 舉報

8#
ID:904095 發表于 2022-5-2 22:07 | 只看該作者
多謝大師的分析
回復

使用道具 舉報

9#
ID:904095 發表于 2022-5-2 22:26 | 只看該作者
wulin 發表于 2022-5-2 07:40
由于主循環周期遠大于中斷周期1ms,sum不知是什么數了。if(sum==1000)會跑飛,改if(sum>=1000)。temp=temp

嗯嗯  對
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区在线观看视频 | 性高湖久久久久久久久 | 国产高清久久 | 欧美一区二区三 | 国产精品久久久久久久久久三级 | 日本欧美大片 | 国产精品久久久久久久久久免费看 | 日本成人片在线观看 | 亚洲欧美中文字幕在线观看 | 一区二区三区视频在线观看 | 亚洲性人人天天夜夜摸 | 国产精品国产三级国产aⅴ中文 | 欧美精品成人 | 国产一区二区三区视频 | 国产日韩欧美精品 | 国产一区在线免费 | 免费久久99精品国产婷婷六月 | av国产精品 | 亚洲精品乱码久久久久久黑人 | 精品视频一区在线 | 电影午夜精品一区二区三区 | 精品一区二区久久久久久久网站 | 日韩在线小视频 | 亚洲视频观看 | 国产精品五区 | 欧美日韩亚洲国产综合 | 精品国产伦一区二区三区观看体验 | 自拍偷拍一区二区三区 | 国产高清精品一区二区三区 | 亚洲一区二区三区在线免费观看 | 羞羞视频免费在线观看 | 成人天堂 | 久久久久亚洲精品 | 国产黄色电影 | 亚洲第一av网站 | 亚洲精品乱码久久久久久蜜桃91 | a级片在线观看 | 人人看人人射 | 欧美激情第一区 | 成年免费在线观看 | 国产一级大片 |