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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

我的單片機中斷為啥不起作用啊(小白且菜,別笑出聲)

[復制鏈接]
跳轉到指定樓層
樓主
ID:1120032 發表于 2024-5-17 20:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar x;
sbit speaker=P3^7;
uchar code s8[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};

void delayms(uint time){
        while(time--);
}
//T=1/f;T=1ms;有效周期:T/2=0.5ms(57次計數)
void speakers(){
                        speaker=~speaker;
                        delayms(57);//1KHZ
}
void Display(uchar getx)
{

    P3=0x01;      
    P1=s8[getx/10];
    delayms(360);
    P3=0x02;  
    P1=s8[getx%10];
    delayms(360);
}

void key13(){
        uchar i,j,temp2;
        P3=0x00;
        j=0;
        P0=0xff;
        temp2=0xfe;
        for(j=2;j>0;j--){
                for(i=0;i<8;i++){
                        P0=temp2;
                        delayms(57500);
                        temp2=_crol_(temp2,1);
                        //delayms(2300);
                }
                P0=0xff;
        }
        
}

void Int1() interrupt 2{
        EX1=0;
        P1=0xbf;
        P3=0x03;
        delayms(115000);
}

void Time0(void) interrupt 1 {
        uchar n;
  n=n+1;
  if(n==20){
           x--;
           n=0;
         }                 
  TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;  
  if(x==0)
           TR0=0;
}

void Interrupt(){
        EX1=1;//外部中斷1允許
        IT1=1;//低電平觸發
        PX1=1;//外部中斷1為高級優先中斷        
         while(EX1);
}

void Time(){
        ET0=1;//T0中斷允許
        PT0=0;//定時中斷T0為低級中斷
        TMOD=0x01;//方式一:16位
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        TR0=1;
        x=60;
        do{
                Display(x);
        }while(x);
        TR0=0;
}

/*
        行列掃描,高四位置1,低四位值0;
        按行掃描,檢測行變化;
        行列之間為與關系,按鍵按下,高地址鍵值變化
*/
void main(){
        uchar temp,num,s,g,i;
        s=g=10;
        EA=1;
        while(1){
                P2=0xf0;
                temp=P2;
                if(temp!=0xf0){//檢測按鍵是否被按下
                        delayms(1150);//消抖

        //確認鍵值
        //行掃描結束,若無目標鍵值,重新賦值P2引腳進行掃描

                        temp=P2;
                        if(temp!=0xf0){//再次確認按鍵是否被按下
                                P2=0xfe;//第一行
                                temp=P2;
                                switch(temp){
                                        case(0xee):num=0;break;
                                        case(0xde):num=1;break;
                                        case(0xbe):num=2;break;
                                        case(0x7e):num=3;break;
                                }
                                P2=0xfd;//第二行
                                temp=P2;
                                switch(temp){
                                        case(0xed):num=4;break;
                                        case(0xdd):num=5;break;
                                        case(0xbd):num=6;break;
                                        case(0x7d):num=7;break;
                                }
                                
                                P2=0xfb;//第三行
                                temp=P2;
                                switch(temp){
                                        case(0xeb):num=8;break;
                                        case(0xdb):num=9;break;
                                        case(0xbb):num=10;break;
                                        case(0x7b):num=11;break;
                                }
                //蜂鳴器發聲
                                for(i=0;i<60;i++)
                                        speakers();
                                speaker=1;//關閉蜂鳴器
                                delayms(115);
                                
                                P2=0xf7;//第四行
                                temp=P2;
                                switch(temp){
                                        case(0xe7):key13();break;
                                        case(0xd7):Time();break;
                                        case(0xb7):Interrupt();break;
                                        default: break;
                                }                                
        
                }
        }
        Display(num);
        }
}

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

使用道具 舉報

沙發
ID:1120622 發表于 2024-5-18 10:53 | 只看該作者
  1. void Int1() interrupt 2{
  2.         EX1=0;/************************這里置零代表我進入一次就關閉中斷允許了
  3.         P1=0xbf;
  4.         P3=0x03;
  5.         delayms(115000);
  6. }

  7. void Time0(void) interrupt 1 {
  8.         uchar n;
  9.   n=n+1;
  10.   if(n==20){
  11.            x--;
  12.            n=0;
  13.          }                 
  14.   TH0=(65536-50000)/256;
  15.         TL0=(65536-50000)%256;  
  16.   if(x==0)
  17.            TR0=0;/**************************這里置零就代表定時器停止運行了,定時器計數就不會溢出觸發中斷了
  18. }

  19. void Interrupt(){
  20.         EX1=1;//外部中斷1允許
  21.         IT1=1;//低電平觸發
  22.         PX1=1;//外部中斷1為高級優先中斷        
  23.          while(EX1);/***********************這里不是進入了個死循環嗎?還是說你只想讓外部中斷只用一次
  24. }
復制代碼

而且主函數里也沒有看見調用定時器和中斷的初始化函數
回復

使用道具 舉報

板凳
ID:1109793 發表于 2024-5-18 17:42 | 只看該作者
delayms(115000);別的看不懂,這個115000很明顯是超過UINT的范圍了
回復

使用道具 舉報

地板
ID:1010435 發表于 2024-5-18 19:49 | 只看該作者
void Int1() interrupt 2{
        EX1=0;
        P1=0xbf;
        P3=0x03;
        delayms(115000);
}
在中斷里卡115秒?實際上只能卡65秒
回復

使用道具 舉報

5#
ID:1109793 發表于 2024-5-19 07:37 | 只看該作者
mtt661 發表于 2024-5-18 19:49
void Int1() interrupt 2{
        EX1=0;
        P1=0xbf;

你看他那個delayms,看起來應該是delayus吧。
回復

使用道具 舉報

6#
ID:1121431 發表于 2024-5-19 18:16 | 只看該作者
delayms(115000)那里有錯誤
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 伊人久久麻豆 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 日韩精品一区二区三区在线观看 | 中文字幕在线观看成人 | 亚洲综合网站 | 国产精品久久久久久久久免费樱桃 | 亚洲国产精品一区二区三区 | 日本不卡一区 | 亚洲精品中文字幕 | 国产精品不卡 | 国产免费福利 | 久久亚洲国产精品日日av夜夜 | 岛国午夜 | 日韩中文欧美 | 欧美色a v | 欧美精品一区三区 | 亚洲精品黄色 | 成人av网站在线观看 | 天天射天天操天天干 | 国产欧美精品一区二区色综合朱莉 | 一区二区三区在线电影 | 日韩精品久久久 | 日韩精品一区二区三区高清免费 | 一区二区三区四区不卡视频 | 久久免费精品 | 中文字幕国产精品视频 | 四虎永久免费影院 | 精品国产免费人成在线观看 | 精品日韩一区二区 | 日本成人在线免费视频 | 久草电影网 | 日韩中文字幕在线观看 | 精品一区二区三区在线观看国产 | 欧美国产日本一区 | 欧美一区二 | 美女福利视频网站 | 欧美视频 | 亚洲www啪成人一区二区麻豆 | 91av在线免费播放 | 天天躁人人躁人人躁狂躁 | 国产精成人 |