欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 如何修改這個單片機程序,目的是按鍵切換,現在只有按鍵1能切換按鍵2沒有反應 [打印本頁]

作者: 蘇醒ing    時間: 2020-5-27 22:08
標題: 如何修改這個單片機程序,目的是按鍵切換,現在只有按鍵1能切換按鍵2沒有反應
#include "reg51.h"

#define uchar unsigned char
#define uint  unsigned int

#define Lie   P1

sbit SHCP = P2^0;
sbit  DS  = P2^1;
sbit STCP = P2^2;
bit run=0;

uchar code led[ ] ={.....}
uchar code led2[ ] ={....}
uchar code led3[ ] ={....}//點陣碼
void shift16bit(uchar dat1,uchar dat2)  
{
uchar i;
STCP=0;        
                 for(i=0;i<8;i++)
                  {
                           SHCP=0;
                           if(dat1  & 0x80) DS=1;
                           else DS=0;
                           dat1<<=1;
                           SHCP=1;
                  }
                  for(i=0;i<8;i++)
                  {
                           SHCP=0;
                           if(dat2 &0x80) DS=1;
                           else DS=0;
                           dat2<<=1;
                           SHCP=1;
                  }
                 STCP=1;
}

void delay(uint x)
{
uint i;
for(i=0;i<x;i++);
}

void Int0Init()
{
        //設置INT0
        IT0=1;//跳變沿出發方式(下降沿)
        EX0=1;//打開INT0的中斷允許。        
        EA=1;//打開總中斷        
}


void main()
{
        
    unsigned char i;
    unsigned char x=0;
    unsigned int n;

        run=0;
          Int0Init();  //        設置外部中斷0
while(1)
{
     if(run==2)
         {
          uchar i,x=0;
uint n;

while(1)
{
        for(n=0;n<5;n++) //控制滾動速度
         for(i=0;i<16;i++)//控制字形代碼共16列
          {
           Lie=i;
           shift16bit(led3[2*i+2*x+1],led3[2*i+2*x]);//取出每一列的數據
           delay(100);
          }
  x++;
         
if(x==96) x=0;
}//第三種輸出
     }
         else if(run==1)
         {
         uchar i,x=0;
uint n;

while(1)
{
        for(n=0;n<5;n++) //控制滾動速度
         for(i=0;i<16;i++)//控制字形代碼共16列
          {
           Lie=i;
           shift16bit(led2[2*i+2*x+1],led2[2*i+2*x]);//取出每一列的數據
           delay(100);
          }
  x++;
         
if(x==160) x=0;
}//第二種輸出
     }         
     else
         {
          for(n=0;n<5;n++) //控制滾動速度
         for(i=0;i<16;i++)//控制字形代碼共16列
          {
           Lie=i;
           shift16bit(led[2*i+2*x+1],led[2*i+2*x]);//取出每一列的數據
           delay(100);
          }
  x++;
          if(x==64)
          x=0;
         }
}
}
//外部中斷0
void int0(void) interrupt 0
{
        run=1;
}



K)]XHY(@_%TP~90AU3}8.png (65.94 KB, 下載次數: 35)

K)]XHY(@_%TP~90AU3}8.png

作者: 蘇醒ing    時間: 2020-5-27 22:43
感覺是我中斷出問題o(╥﹏╥)o有大佬幫忙改一下嗎
作者: carpcarey    時間: 2020-5-28 08:32
外部中斷1沒開,中斷函數也沒。當然按鍵2沒反應了。
作者: 蘇醒ing    時間: 2020-5-28 09:54
carpcarey 發表于 2020-5-28 08:32
外部中斷1沒開,中斷函數也沒。當然按鍵2沒反應了。

大佬能幫忙改一下嗎,并不熟悉中斷,我是拿一個中斷往原來程序上改的o(╥﹏╥)o
作者: 烈火    時間: 2020-5-28 10:20
main函數有問題,while(1)
{
     if(run==2)
         {
          uchar i,x=0;
uint n;
變量不能聲明在if里面
作者: 蘇醒ing    時間: 2020-5-28 10:49
已完成,感謝大佬相助!萬分感謝
作者: 流星2019    時間: 2020-5-28 11:01
你確定你了解中斷嗎




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1