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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

如何修改這個單片機程序,目的是按鍵切換,現在只有按鍵1能切換按鍵2沒有反應

[復制鏈接]
跳轉到指定樓層
樓主
10黑幣
#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
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:758120 發表于 2020-5-27 22:43 | 只看該作者
感覺是我中斷出問題o(╥﹏╥)o有大佬幫忙改一下嗎
回復

使用道具 舉報

板凳
ID:267719 發表于 2020-5-28 08:32 | 只看該作者
外部中斷1沒開,中斷函數也沒。當然按鍵2沒反應了。
回復

使用道具 舉報

地板
ID:758120 發表于 2020-5-28 09:54 | 只看該作者
carpcarey 發表于 2020-5-28 08:32
外部中斷1沒開,中斷函數也沒。當然按鍵2沒反應了。

大佬能幫忙改一下嗎,并不熟悉中斷,我是拿一個中斷往原來程序上改的o(╥﹏╥)o
回復

使用道具 舉報

5#
ID:744327 發表于 2020-5-28 10:20 | 只看該作者
main函數有問題,while(1)
{
     if(run==2)
         {
          uchar i,x=0;
uint n;
變量不能聲明在if里面
回復

使用道具 舉報

6#
ID:758120 發表于 2020-5-28 10:49 | 只看該作者
已完成,感謝大佬相助!萬分感謝
回復

使用道具 舉報

7#
ID:481073 發表于 2020-5-28 11:01 | 只看該作者
你確定你了解中斷嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色吧久久| 日韩精品极品视频在线观看免费 | av第一页| 亚洲精品成人 | 国产精品美女久久久久久久网站 | 男人的天堂一级片 | 国产精品免费看 | 欧美一区二区视频 | 91午夜在线 | 国产欧美在线 | 久久综合一区二区 | 欧美在线视频网 | 日本精品视频在线观看 | 久草视 | 精品一区久久 | 午夜精品一区二区三区在线视频 | 久久精品二区亚洲w码 | 天天躁人人躁人人躁狂躁 | 久久精品亚洲精品国产欧美kt∨ | 999视频| 日韩av高清 | 精品国产一区二区三区在线观看 | 欧美精品网站 | 天天干天天插 | 亚洲免费久久久 | 亚洲精品专区 | 国内自拍偷拍视频 | 午夜无码国产理论在线 | 精品亚洲一区二区三区 | 男女污污动态图 | 91欧美| 成人a视频在线观看 | 欧美一区二区在线观看 | 在线视频一区二区 | 免费观看黄a一级视频 | 成人小视频在线观看 | 青青99| 成人免费一级 | 91精品久久久久久久久久 | 黄网站涩免费蜜桃网站 | 99re在线视频 |