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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6511|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩av一区二区在线观看 | 久久99精品视频 | 成人动慢 | 欧美日韩一区在线 | 欧美精品乱码久久久久久按摩 | 亚洲精品视频在线 | 久久久性色精品国产免费观看 | 久久91av| 免费一区二区三区 | 日本在线视频一区二区 | 特黄色毛片 | 午夜天堂精品久久久久 | 久久久久久久久久久久久久av | 免费的黄色片子 | 麻豆91精品91久久久 | 精品真实国产乱文在线 | 亚洲小视频在线观看 | 欧美一级免费看 | 国产精品一卡二卡三卡 | 91免费看片 | 国产午夜精品久久久久 | 国产精品一二三区 | 亚洲成人第一页 | 中文精品久久 | 午夜99 | 欧美精品一区三区 | 欧美视频区 | 一区二区三区四区免费观看 | 日韩久草 | 日韩视频精品在线 | 久久九| 成人久草 | 国产精品久久久久久久久久妇女 | 亚洲欧美在线观看 | 久久九九色 | 玖玖视频网 | 久久久久久综合 | 日韩在线欧美 | 国产精品视频一二三区 | av第一页 | 国产伦精品一区二区三区在线 |