求下图的单片机C语言程序、利用外部中断0.1实现两位数码管从0--99的加一或减一

急求啊 要求是51单片机的C语言、SB1加一 SB2减一 程序尽量简单化 感激不尽!成功实现追高分
要是共阳极的

#include <reg51.h>
unsigned char code table_d[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
unsigned char code table_w[]={0x01,0x02};
unsigned char num;
void show(unsigned char);
void delay(void);
void main()
{
    unsigned char code_num[2]={0};
    EA=1;
    EX0=1;
    EX1=1;
    IT0=1;
    IT1=1;
    while(1)
    {
        show(num);
    }
}
void show(unsigned char num)
{
    P2=table_w[1];
    P0=table_d[num%10];
    delay();
    P0=0xFF;
    P2=table_w[0];
    P0=table_d[num/10%10];
    delay();
    P0=0xFF;
}
void delay()
{
    int i,j;
    for(i=10;i;--i)
        for(j=100;j;--j);
}
void inc(void) interrupt 0
{
    if(++num>99||num<0)
        num=0;
}
void dec(void) interrupt 2
{
    if(--num>99||num<0)
        num=0;;
}

追问

修改了一下 还中

温馨提示:内容为网友见解,仅供参考
无其他回答

单片机:采用外部中断0和1,控制两位数码管进行00~99的计数,其中外部中断0...
这好办!定义一个寄存器num,若是外中断0,则num--;若是外中断1,则num++;然后让num显示即可。

求用单片机驱动数码二级管的C语言程序,要求二级管显示00~99_百度知 ...
void delay500ms();\/\/延时子程序声明 void display(unsigned char X);\/\/显示子程序声明 void main(){ while(1){ delay500ms();count++;if(count>=100)count=0;display(count);} } void delay500ms(){ unsigned char i,j,k;for(i=5;i>0;i--)for(j=200;j>0;j--)for(k=248;k...

...怎么用单片机使2位数码管动态显示00---99? P1口接1个二位数码管 P3...
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};unsigned char buffer[6];bit flag;unsigned int n;unsigned char j =0;void delay(int ms){ int i;while(ms--)for(i=0;i<200;i++);} handle(unsigned int n){ unsigned char i;for(i=0;...

单片机用汇编写两个数码管显示0到99循环的程序
在进行单片机汇编编程时,要实现一个0到99循环显示在两个数码管上的程序,首先需要进行以下步骤:1. 新建一个项目,确保硬件环境和开发工具准备就绪。2. 为数码管设置段选表,根据数码管的段码定义一组映射关系,便于控制每个数码管的显示字符。3. 实现延时函数,以确保字符的稳定显示,通常通过定时器或...

用C语言51单片机编写数码管从00到99的循环程序
{ TMOD=0x01;ET0=1;EA=1;TR0=1;TH0=0x3c;TL0=0xaf;} void time_1s (void) interrupt 1 { int ncount;TH0=0x3c;TL0=0xaf;ncount++;if(ncount<20) return;{ ncount=0;i++;if(i==100) i=0;} }

数码管俩位显示0到99加中断程序
void dispaly(uchar num);\/\/显示子程序 void main(){ init();while(1){ dispaly(num);} } void init()\/\/初始化函数 { p1=1;p2=1;num=0;TMOD=0x01;\/\/采用定时器中断 TH0=(65536-50000)\/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;} void dispaly(uchar num)\/\/显示子程序 ...

单片机数码管显示0到999c语言程序怎么编
include<reg51.h> unsigned char xs_d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned int time=0,s,sz;delay(unsigned int k){ unsigned int i,j;for(i=0;i<k;i++)for(j=0;j<125;j++);}INT_0()interrupt 0 { delay(10);if(INT0==0){sz++; if...

单片机用汇编写两个数码管显示0到99循环的程序
要实现单片机用汇编语言编写的数码管循环显示0到99的程序,首先,你需要创建一个新的项目并做好初始化准备工作。接着,创建一个数码管段选表,它将决定每个数码管的显示模式。延时函数在此过程中也至关重要,以控制数码管的刷新速度。定义一个名为i的uchar变量,初始化一个名为wk的标志位,用于控制...

51单片机,用外部中断0和外部中断1实现:1个七段LED数码管显示值加1和...
给你讲思路吧,先设置外部中段,打开中断开关。主程序可以利用一个for循环,每有一次中断就操作一次数组(数组元素加一或减一(其中数组对应的是数码管1~9的显示))

stm32用一个按键控制两位数码管从00-99,代码怎么写
void delay(int k) \/\/最简单的C延时程序 { unsigned char i;while(k--) \/\/直至K减为0则跳出 {for(i=100;i>0;i--);} } ¥ 5.9 百度文库VIP限时优惠现在开通,立享6亿+VIP内容 立即获取 单片机_两个数码管显示00~99 \/按键控制加、减显示00-99(P1接8个独立按键,P10按下为加,P11...

相似回答