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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求大佬幫忙把下面單片機程序改成非中斷函數

[復制鏈接]
跳轉到指定樓層
樓主
ID:418072 發表于 2018-10-31 11:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg51.h>

sbit wei1=P3^4;
sbit wei2=P3^5;
sbit wei3=P3^6;
sbit wei4=P3^7;
sbit led=P1^0;

unsigned char segdat[16]=
{0xc0,
0xf9,
0xa4,
0xb0,
0x99,
0x92,
0x82,
0xf8,
0x80,
0x90,        };

unsigned int cnt=0,kevval;
void delay(unsigned int x);
void display_seg4(unsigned int dat,unsigned char tim);
void INIT_int0(void);

unsigned int js=0;
unsigned char flag=0;

void main(void)
{
INIT_int0();
while(1)
{
   if(flag==1)
   {
  js++;
  if(js>=10000)
  {
    js=0;
  }
}
  if(flag==0)
  {
     js=0;
  }
  display_seg4(js,2);
}
}

void zduan(void) interrupt 0
{
flag++;
if(flag==3)
flag=0;
}

void delay(unsigned int x)
{
unsigned int i,j;
for(i=0;i<x;i++)
{
   for(j=0;j<100;j++)
   {
     ;
   }
}
}

void INIT_int0(void)
{
IT0=1;
IE0=0;
EX0=1;
EA=1;
}

void display_seg4(unsigned int dat,unsigned char tim)
{
unsigned char tmp;
tmp=dat/1000%10;
P2=segdat[tmp];
wei1=1;
delay(20);P2=0xff;wei1=0;
tmp=dat/100%10;
P2=segdat[tmp];
wei2=1;
delay(20); P2=0xff;wei2=0;
tmp=dat/10%10;
P2=segdat[tmp];
wei3=1;
delay(20); P2=0xff;wei3=0;
tmp=dat%10;
P2=segdat[tmp];
wei4=1;
delay(20); P2=0xff;wei4=0;

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

使用道具 舉報

沙發
ID:277550 發表于 2018-10-31 23:21 | 只看該作者
這是外部中斷,不要外部中斷,就改成主循環中自動計數、延時累加,,,,,,,,,,,
回復

使用道具 舉報

板凳
ID:149144 發表于 2018-11-1 12:12 | 只看該作者
不知道你的具體意思,附件里有仿真,希望對你有幫助按鍵表示開始和清零

#include <reg51.h>

sbit wei1 = P3^4;
sbit wei2 = P3^5;
sbit wei3 = P3^6;
sbit wei4 = P3^7;
sbit ledA  = P1^0;
sbit ledB  = P1^1;

sbit ButtonA = P3^2;        // * *
sbit ButtonB = P3^3;        // * *

#define Seg_7_4 P2                // * *

unsigned char segdat[10]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };

//unsigned int cnt = 0,kevval = 0;

void delay(unsigned int x);
void initTimer(void);
void display_seg4(unsigned int dat);//,unsigned char tim

void INIT_int0(void);

unsigned int js = 0;
unsigned char flag  = 0;
unsigned char times = 0;
void main(void)
{
        initTimer();
        INIT_int0();
        TR0 = 1;
        ET0 = 1;
        EA  = 1;
        ButtonA = 1;
        ButtonB = 1;

        while(1)
        {       
                display_seg4(js);//   *  *       
                if(flag == 0)
                {
                        times = 0;//清零
                        js = 0;//清零  JS 計數 ? 還是劍圣 ?
                }
        }
}
//  * *
void timer0(void) interrupt 1// 50 000 us = 50ms
{
        TH0=0x3c;
        TL0=0xb0;
        if(flag == 1)
        {
                if(++times > 20)// 50ms * 20 = 1s  想看效果 這個改小
                {
                        times = 0;
                        if(++js > 9999)
                        {
                                js = 0;
                        }                       
                }
        }       
}
       
void zduan(void) interrupt 0//**
{
        delay(2);
        if(ButtonA == 0)
        {
                if(++flag >1 )flag=0;//        * *   改成 2   2的時候就是暫停 3=0
        }       
}

void initTimer(void)//  *  *
{
TMOD=0x1;
TH0=0x3c;
TL0=0xb0;
}

void delay(unsigned int x)
{
        unsigned int i,j;
        for(i=0;i<x;i++)
        {
                 for(j=0;j<100;j++)
                {
                        ;               
                }
        }
}

void INIT_int0(void)
{
        IT0=1;
        IE0=0;
        EX0=1;
        EA=1;
}

void display_seg4(unsigned int dat)//,unsigned char tim  //        * *
{
        unsigned char tmp;
        tmp = dat/1000;
        Seg_7_4 = segdat[tmp];
        wei1 = 1;
        delay(2);//        *        *
       
        Seg_7_4 = 0xff;
        wei1 =0;
       
        tmp = dat/100;
        Seg_7_4  = segdat[tmp];
        wei2 = 1;
        delay(2);
       
        Seg_7_4 = 0xff;
        wei2 = 0;
       
        tmp = dat/10;
        Seg_7_4 = segdat[tmp];
        wei3 = 1;
        delay(2);
       
        Seg_7_4 = 0xff;
        wei3 = 0;
       
        tmp = dat%10;
        Seg_7_4 = segdat[tmp];
        wei4 = 1;
        delay(2);
       
        Seg_7_4 = 0xff;
        wei4 = 0;

}


51.rar

54.2 KB, 下載次數: 6

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 特级黄一级播放 | 麻豆国产一区二区三区四区 | 亚洲三区在线观看 | 成人一区精品 | 91精品久久久久久久久中文字幕 | 亚洲一区中文字幕 | 亚洲精品免费视频 | 91精品国产91久久久久久 | 精品久久久久久久久久久久 | 日日干夜夜操天天操 | 狠狠干网 | 香蕉久久a毛片 | 午夜国产一区 | av大片 | 97精品超碰一区二区三区 | 男人的天堂在线视频 | 一本一道久久a久久精品蜜桃 | 亚洲黄色国产 | 国产丝袜人妖cd露出 | heyzo在线| 日韩一区和二区 | 婷婷五月色综合 | 久久久精品网 | 99视频在线 | 亚洲视频观看 | 国产一区二区三区四区在线观看 | 精品久久一区二区三区 | 久久综合久久综合久久 | 午夜男人天堂 | 91精品国产一区二区三区 | 欧美日韩一 | 亚洲精品国产综合区久久久久久久 | 超级乱淫av片免费播放 | 在线亚洲一区二区 | 日本午夜免费福利视频 | 欧美一区成人 | 国产精品久久一区二区三区 | 免费黄色a级毛片 | 亚洲精品一区二区三区蜜桃久 | 国产区在线观看 | 成人av网站在线观看 |