这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 坤创E-Geek/天科大新电社 » 关于蓝桥杯训练小程序 中断控制数码管显示数字加减

共1条 1/1 1 跳转至

关于蓝桥杯训练小程序 中断控制数码管显示数字加减

工程师
2019-01-25 14:02:32     打赏
/*利用数码管在最高为显示数字0,利用按键执行中断控制数字加减*/
/*和上次写的中断控制左右移动几乎相同,只是把控制位选改为段选*/
/*以下为我利用手头上的开发板(QX-MCS51)写下的小程序*/

#include <reg52.h>

#define u8 unsigned char
#define u16 unsigned int

sbit DU = P2^6;
sbit WE = P2^7;
sbit S2 = P3^0;
sbit S3 = P3^1;
sbit jia = P3^6;
sbit jian = P3^7;

u8 SMGdu[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
u8 j;

void Delay_ms(u16 n) 
{
 u8 j;
 while(n--)
  for(j=0;j<113;j++);
}

void SMGHS() 
{
 P0 = 0xff;
 WE = 1;
 P0 = 0x7f;
 WE = 0;
 DU = 1;
 P0 = SMGdu[j];
 DU = 0;
 Delay_ms(10);
}

void Init() 
{
 EA = 1;
 EX0 = 1;
 EX1 = 1;
 IT0 = 1;
 IT1 = 1;
}

void main()
{
 while(1)
 {
  Init();
  SMGHS();
  if(S2 == 0)
  {
   Delay_ms(10);
   if(S2 == 0)
   {
    jia = 1;
    jia = 0;  
    while(S2 == 0);
   }
  }
  if(S3 == 0)
  {
   Delay_ms(10);
   if(S3 == 0)
   {
    jian = 1;
    jian = 0; 
    while(S3 == 0);
   }
  }
 }
}

void int0() interrupt 0
{
 j++;
 if(j == 10)
  j = 0;
}

void int1() interrupt 2
{
 j--;  
 if(j == -1)
  j = 9;
}



关键词: 蓝桥训练     程序     外部中断     数码管数加减    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]