本实验的目的:
使用中断实现通过编号为8和C的按键控制数码管数字的加减,加至15之后再循环到0,减到0之后保持0不变。
#include <reg52.h>
sbit WEI=P2^7;
sbit DUAN=P2^6;
void delay(int t)
{
while(t--);
}
unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9
unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
unsigned char KeyScan(void) //键盘扫描函数,使用行列逐级扫描法
{
unsigned char Val;
P3=0xf0;//高四位置高,低四位拉低
if(P3!=0xf0)//表示有按键按下
{
//DelayMs(10); //去抖
if(P3!=0xf0)
{ //表示有按键按下
P3=0xfe; //检测第一行
if(P3!=0xfe)
{
Val=P3&0xf0;
Val+=0x0e;
while(P3!=0xfe);
while(P3!=0xfe);
return Val;
}
P3=0xfd; //检测第二行
if(P3!=0xfd)
{
Val=P3&0xf0;
Val+=0x0d;
while(P3!=0xfd);