27,381
社区成员
发帖
与我相关
我的任务
分享
#include<reg52.h>
#include<Stdio.h>
#define duan P0
#define uchar unsigned char
#define uint unsigned int
sbit wei1=P2^4;
sbit wei2=P2^5;
sbit wei3=P2^6;
sbit wei4=P2^7;
sbit LED1=P2^0;
sbit LED2=P2^1;
uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint num1=0,num2=0,ge,shi,bai,qian;
uchar UART_buff,SEND_buff[8];
bit New_rec = 0, Send_ed = 1, Start = 0;
void SendString(unsigned char *p);
//----------------------------------------------
void delay(unsigned int i) //Delay
{
unsigned int j;
for(i;i>0;i--)
for(j = 112; j >0; j--);
}
//----------------------------------------------
void display() //display
{
duan=tab[ge];
wei1=0;
wei2=0;
wei3=0;
wei4=1;
delay(5);
duan=tab[shi];
wei1=0;
wei2=0;
wei3=1;
wei4=0;
delay(5);
duan=tab[bai];
wei1=0;
wei2=1;
wei3=0;
wei4=0;
delay(5);
duan=tab[qian];
wei1=1;
wei2=0;
wei3=0;
wei4=0;
delay(5);
}
//----------------------------------------------
void main (void)
{
SCON = 0x50;
TMOD = 0x20;
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1;
ES= 1; //port interrupt
EA=1; //sum interrupt
EX0=1; //out interrupt 0
IT0=1; //1-down edge ,0-low
PX0=1; //First
EX1=1; //out interrupt 1
IT1=1; //1-down edge ,0-low
PX1=0; //second
while(1)
{
display();
if ((New_rec == 1) && (Send_ed == 1))
{
New_rec = 0;
Send_ed = 0;
}
}
}
//----------------------------------------------
void int0() interrupt 0 //sensor1 interrupt
{
LED1=~LED1;
// num1++;
// //sprintf(SEND_buff,"%8d",num1,"\n");
// printf(SEND_buff,"%s : %s",num1,num2);
// ge=num1%10;
// shi=num1/10%10;
// bai=num2%10;
// qian=num2/10%10;
// if(num1==99)
// num1=0;
}
//----------------------------------------------
void int1() interrupt 1 //sensor2 interrupt
{
LED2=~LED2;
// num2++;
// //sprintf(SEND_buff,"%8d",num2,"\n");
// printf(SEND_buff,"%s : %s",num1,num2);
// ge=num1%10;
// shi=num1/10%10;
// bai=num2%10;
// qian=num2/10%10;
// if(num2==99)
// num2=0;
}
//----------------------------------------------
void ser_int (void) interrupt 4 //serial port
{
if(RI == 1)
{
RI = 0; //recive string
New_rec = 1;
UART_buff = SBUF;
if(UART_buff == '#')
{ //LED = 1,num1=0,num2=0;
//sprintf(SEND_buff,"%8d",num1,"\n");
sprintf(SEND_buff,"%s : %s",num1,num2);
}
else if(UART_buff == '$')
{ //LED = 0;
SendString(SEND_buff);
}
else if(UART_buff == '%')
{ //LED = 0;
SendString(SEND_buff);
}
}
else
{
SendString(SEND_buff); //send string
TI = 0;
Send_ed = 1;
}
//delay(200);
//while(P3^2==0);
}
void SendChar(unsigned char Chr)
{
SBUF=Chr;
while(!TI);
TI=0;
}
void SendString(unsigned char *p)
{
while(*p)
{
SendChar(*p);
p++;
}
}