📄 jinyuspeed.c
字号:
#include "reg51.h"
sbit int0 =P3^2;
sbit P2_4=P2^7;
sbit P2_5=P2^6;
sbit P2_6=P2^5;
sbit P2_7=P2^4;
unsigned char count; //脉冲数
bit countflg; //计数开始标志位
unsigned long int _1ms;//1ms
unsigned long int time; //半周时间
unsigned char time1;
unsigned char time2;
unsigned char time3;
unsigned char time4;
unsigned char codes[10]={
0xC0,/*0*/
0xF9,/*1*/
0xA4,/*2*/
0xB0,/*3*/
0x99,/*4*/
0x92,/*5*/
0x82,/*6*/
0xF8,/*7*/
0x80,/*8*/
0x90,/*9*/};
void exint (void) interrupt 0
{
EX0=0;
if(countflg==0)
{TR0=1;
countflg=1;
}
else
{
count++;
if(count>=4)
{
_1ms=0;
count=0;
TL0=0x18;
TH0=0xfc;
}
}
EX0=1;
}
void delay10ms(void)
{unsigned int a;
for(a=0;a<1000;a++)
{
;
}
}
void display(void)
{P2_4=0;
P0=codes[time1];
delay10ms();
P2_4=1;
P2_5=0;
P0=codes[time2];
delay10ms();
P2_5=1;
P2_6=0;
P0=codes[time3];
delay10ms();
P2_6=1;
P2_7=0;
P0=codes[time4];
delay10ms();
P2_7=1;
}
void timer0(void) interrupt 1
{
TR0=0;
TL0=0x18;
TH0=0xfc;
_1ms++;
TR0=1;
}
void main(void)
{_1ms=0;
count=0;
countflg=0;
EA=1;
EX0=1;
ET0=1;
TMOD=0x1;
TR0=0;
TL0=0x18;
TH0=0xfc;
while(1)
{
/*time4=time%1000;
time3=(time-1000*time4)%100;
time2=(time-1000*time4-100*time3)%10;
time1=time-1000*time4-100*time3-time2*10;*/
time1=time%10;
time/=10;
time2=time%10;
time/=10;
time3=time%10;
time/=10;
time4=time%10;
display();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -