📄 main.c
字号:
#include<pic.h>
#define BIT(x) (1<<(x))
#define uint unsigned int
#define uchar unsigned char
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//数码管译码表
__CONFIG(0x3B31);
void delay(uint ms) //毫秒延时程序
{
uint i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<88;j++);
}
}
void show(uchar j,uchar k)//数码管动态位显示,j为显示的数值,k为显示的位
{
PORTD=table[j]; //PD口做数据口段选
PORTA=~(1<<(k)); //PA口低位做位选
delay(1);
PORTA=0XFF;
}
void init()
{
TRISA=0;//输出
PORTA=0XFF;
TRISD=0;//输出
PORTD=0;
TRISB=0X0F;//低四位输入
PORTB=0;
TRISE0=0;
RE0=0;
}
void bell(uchar num)//蜂鸣器响
{
uchar dnum;
for(dnum=num;dnum>0;dnum--)
{
RE0=1;
delay(50);
RE0=0;
delay(20);
}
}
void dig_tube(uchar num0,uchar num1,uchar num2,uchar num3,uchar num4,uchar num5)
{
show(num0,0);
show(num1,1);
show(num2,2);
show(num3,3);
show(num4,4);
show(num5,5);
}
void main()
{uchar key_num;
init();
while(1)
{
if(RB0==0)
{
delay(10);
if(RB0==0)
{
while(!RB0);
key_num=1;
}
}
if(RB1==0)
{
delay(10);
if(RB1==0)
{
while(!RB1);
key_num=2;
}
}
if(RB2==0)
{
delay(10);
if(RB2==0)
{
while(!RB2);
key_num=3;
}
}
if(RB3==0)
{
delay(10);
if(RB3==0)
{
while(!RB3);
key_num=4;
}
}
dig_tube(key_num,1,2,3,5,8);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -