#include<reg52.h> #define ucharunsigned char #defineuint unsigned int ucharduan[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //所需的段的位码 //ucharwei[4]={0XEf,0XDf,0XBf,0X7f}; //位的控制端 (开发板) ucharwei[4]={0X80,0X40,0X20,0X10}; //位的控制端 (仿真) uint z,x,c,v,date; //定义数据类型 uintdispcount=0; /****************************************************************** 延时函数 ******************************************************************/ voiddelay(uchar t) { uchar i,j; for(i=0;i<t;i++) { for(j=13;j>0;j--); { ; } } } /********************************************************************** 数码管动态扫描 *********************************************************************/ voidxianshi() { /*****************数据转换*****************************/ z=date/1000; //求千位 x=date%1000/100; //求百位 c=date%100/10; //求十位 v=date%10; //求个位 P2=wei[0]; P0=duan[z]; delay(50); P2=wei[1]; P0=duan[x]; delay(50); P2=wei[2]; P0=duan[c]; delay(50); P2=wei[3]; P0=duan[v]; delay(50); } /************************************************************************* 主函数 **************************************************************************/ voidExtInt0() interrupt 0 //中断服务程序 { dispcount++;//每按一次中断按键,计数加一 if(dispcount==9999) //计数范围0-9999 {dispcount=0;} } /************************************************************************* 主函数 **************************************************************************/ void main() { TCON=0x01; //中断设置 IE=0x81; while(1) { date=dispcount; xianshi(); } } 这是程序 求大神帮助下
|