想在计数器里加一个按键控制一个灯闪烁和熄灭
#include <reg52.h> #define uchar unsigned char #define uint unsigned int sbit k6 = P1^6; //按键k6连接到了单片机的P1.6引脚sbit k7 = P1^7; //按键k7连接到了单片机的P1.7引脚uchar Table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//显示段码。uchar qianwanwei,baiwanwei,shiwanwei,wanwei,qianwei,baiwei,shiwei,gewei;//定义8个变量用于存放计数值count的各个位uint count=0;//初始计数值uint i=0;//定义一个全局变量i,当想把count分成千万,百万,十万,万,千、百、十、个位是用来临时存储count数据用//********一下声明三个函数***************/ void display(void); //显示函数void process(uint i); //数据处理函数,负责做除法运算,将计数器里的数分成千万,百万,十万,万,千,百,十,个void key(void); // 按键函数,用于检测是否有按键按下,如果有就相应的加或减计数器里的数/*****************************延时子程序********************************/ void delayms(uchar ms) { uchar i; while(ms--) { for(i = 0; i < 120; i++); } } /*****************************显示函数**********************************/ void display(void) //动态显示函数,参数P为待显示的数组名{ P2=0x7f; //打开P2.7位控制的数码管?P0=Table[qianwanwei]; //取千万位在Table数组中所对应的显示段码送P0口delayms(1);P2=0xbf; //打开P2.6位控制的数码管P0=Table[baiwanwei]; //取百万位在Table数组中所对应的显示段码送P0口delayms(1);P2=0xdf; //打开P2.5位控制的数码管P0=Table[shiwanwei]; //取十万位在Table数组中所对应的显示段码送P0口delayms(1);P2=0xef; //打开P2.4位控制的数码管P0=Table[wanwei]; //取万位在Table数组中所对应的显示段码送P0口delayms(1);P2=0xf7; //打开P2.3位控制的数码管。P0=Table[qianwei]; //取千位在Table数组中所对应的显示段码送P0口delayms(1); //延时函数,动态显示,延时过长会出现一个一个点亮的效果。P2=0xfb; //打开P2.2位控制的数码管。P0=Table[baiwei]; //取百位在Table数组中所对应的显示段码送P0口delayms(1); //延时函数,动态显示,延时过长会出现一个一个点亮的效果。P2=0xfd; //打开P2.1位控制的数码管。P0=Table[shiwei]; //取十位在Table数组中所对应的显示段码送P0口delayms(1); ⼀⼀延时函数,动态显示,延时过长会出现一个一个点亮的效果。P2=0xfd; ⼀⼀打开P2.1位控制的数码管。P0=Table[shiwei]; ⼀⼀取十位在Table数组中所对应的显示段码送P0口delayms(1); ⼀⼀延时函数,动态显示,延时过长会出现一个一个点亮的效果。P2=0xfe; ⼀⼀打开P2.0位控制的数码管。P0=Table[gewei]; ⼀⼀取个位在Table数组中所对应的显示段码送P0口delayms(1); ⼀⼀延时函数,动态显示,延时过长会出现一个一个点亮的效果。P2=0xff; ⼀⼀P2口输出全"1",所有三极管都截止,数码管全熄灭} ⼀*****************************数据处理**********************************⼀ void process(void) { qianwanwei=i⼀10000000; ⼀⼀取i的千万位,保存到数组qianwanwei中baiwanwei=i⼀1000000; ⼀⼀取i的百万位。保存到数组baiwanwei中