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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機的P3.2和P3.3口有區別嗎?

[復制鏈接]
回帖獎勵 30 黑幣 回復本帖可獲得 10 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
proteus仿真里把P3.2設為信號輸入判斷高低電平計數,P3.3為計數啟動鍵這里我想把這兩個鍵對調一下,變為:P3.2啟動鍵,P3.3信號輸入鍵,程序里是外部定義全局變量,把P口改了,但是仿真里好像識別不到P3.3的信號?我的啟動鍵一上一下反而計數值增加了,這是為什么?
程序如下:

sbit k1=P3^2; //sbit在外部定義全局變量 k1啟動鍵
sbit P33=P3^3;
//變量


uint  now=0; //計數值
uint  set=10;
uint  bzbu=0;//設置
uint  bz=0;//模式
uint  qidong=0;//運行
//顯示控制
void dis()
{
  //now
  lcd1602_adr(0x0B);  
  lcd1602_writenumber(0x30+now%10000/1000);
  lcd1602_writenumber(0x30+now%1000/100);
  lcd1602_writenumber(0x30+now%100/10);
  lcd1602_writenumber(0x30+now%10);
  //set
  lcd1602_adr(0x4B);  
  lcd1602_writenumber(0x30+set%10000/1000);
  lcd1602_writenumber(0x30+set%1000/100);
  lcd1602_writenumber(0x30+set%100/10);
  lcd1602_writenumber(0x30+set%10);
  if(bz==0)lcd1602_writenumber(' ');
  if(bz==1)lcd1602_writenumber('<'); //bz為1寫入,為0???沒看懂
   //啟動
  if(bz==0)
  {
    if(k1==0)
                        {qidong=(qidong+1)%2;
                if(qidong==1)
                {;} //
                else {;}
                while(k1==0);}
   }
   //啟動 K1為0 啟動  %取余數
  if(qidong==1)
  {
    if(now>=set){qidong=0;_delay_ms(500);  }  //蜂鳴器叫,燈關
   }
   //啟動

}
//按鍵功能函數
void key()
{
  //掃描
  key_z();
  if(keyn1<16)
  {       
   if((keyn1<10)&&(bz==1))
        {
         if(bzbu==0){set=keyn1;}
         if(bzbu==1){set=set*10+keyn1;}
         if(bzbu==2){set=set*10+keyn1;}
         if(bzbu==3){set=set*10+keyn1;}
         bzbu=(bzbu+1)%4;
        }
        if((keyn1==0x0a)&&(bz==0)){now=0;}//復位
        if((keyn1==0x0b)&&(bz==1)){set=0;}//復位輸入
        if((keyn1==0x0c)&&(qidong==0)){bz=1;}//設置
        if(keyn1==0x0d){bz=0;}//退出
        keyn1=16;
  }
}
void DelayMS(uint ms)
{
        uchar i;
        while(ms--)
        {
                 for(i=0;i<120;i++);
        }
}

void SETP_MOTOR_FFW(uchar n)
{
        uchar i,j;
        for(i=0;i<5*n;i++)
        {
                 for(j=0;j<8;j++)
                {
                        
                        P1 = FFW[j];
                        DelayMS(25);
                        dis(); //顯示
   key();

                }
        }
}

void SETP_MOTOR_REV(uchar n)
{
        uchar i,j;
        for(i=0;i<5*n;i++)
        {
                 for(j=0;j<8;j++)
                {
                        
                        P1 = REV[j];
                        DelayMS(25);
                        dis(); //顯示
   key();
                }
        }
}
//-----------------------
void main()   
{
                uchar N = 3;
  _delay_us(10);
  _delay_ms(10);  
  //中斷允許
  IT0=1;
  EX0=1;
  EA=1;  
  //初始化
  lcd1602_init();
  LCD1602_string(1,1,zifu0);
  LCD1602_string(1,1,zifu0);
  LCD1602_string(2,1,zifu1);
  while(1)
  {

                 if(K1 == 0)
                {
                         dis(); //顯示
   key();
               
                        SETP_MOTOR_FFW(N);
               
                       
                }
                else if(K2 == 0)
                {
                         dis(); //顯示
   key();
               
                        SETP_MOTOR_REV(N);
                       
                }
                else
                {
                         dis(); //顯示
   key();
                 
                }
        }
}


//INT0中斷函數
void  EX_INT0() interrupt 0
{
if(qidong==1)
{
  _delay_ms(3);if(P33==0)now=now+1;  
}
}




1589552934(1).jpg (2.19 KB, 下載次數: 73)

1589552934(1).jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:444385 發表于 2020-5-15 22:59 | 只看該作者
發現了,是中斷方式那里的問題...
我把中斷方式從0改為1,  IT0=1;  EX0=1; 改為  IT1=1;  EX1=1; ,再把最后void  EX_INT0() interrupt 0改為void  EX_INT1() interrupt 0

為啥還是不行?
回復

使用道具 舉報

板凳
ID:755472 發表于 2020-5-21 15:35 | 只看該作者
兩個IO共一個中斷向量嗎?如果不是,改了IO口就必須改對應的中斷向量名稱才能進入中斷
回復

使用道具 舉報

地板
ID:631508 發表于 2020-5-22 08:56 | 只看該作者
p3.2 3.3和其他IO口沒什么區別,就是它本身多了個中斷的功能,其他引腳怎么接與它無關,你想用中斷功能就把要中斷的外部器件接到它兩其中一個上就好了,然后編寫響應的中斷程序。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲在线一区 | 国产免费一区二区三区 | 91视频88av| 综合精品久久久 | 偷拍亚洲色图 | 亚洲视频一区二区三区 | 精品欧美一区免费观看α√ | 国产精品一区二区日韩 | 香蕉视频1024 | 久久国产精品视频 | 一区二区在线 | 日韩中文在线 | 久久激情视频 | 中文字幕在线视频一区二区三区 | 免费观看一级特黄欧美大片 | 日韩欧美三区 | 香蕉久久网 | 天天干天天爱天天 | 黄片毛片免费观看 | 欧美一区二区三区免费电影 | 羞羞视频网站免费观看 | 91成人午夜性a一级毛片 | 亚洲国产成人av好男人在线观看 | 成人免费在线播放视频 | 久草色视频 | 草久久 | 亚洲精品久久久久久一区二区 | 请别相信他免费喜剧电影在线观看 | 中文字幕一区二区视频 | 99精品99| 国产精品自拍av | 黄片毛片 | 青青久在线视频 | 青青草网 | 国产欧美日韩综合精品一区二区 | 国产精品一区在线观看 | 国产成人a亚洲精品 | 中文字幕一区二区三区乱码图片 | 亚洲综合视频一区 | 国产精品99久久久久久久vr | 欧美成人一级视频 |