📄 main.c
字号:
#include <stdio.h>
#include <reg51.h>
sbit LED = P1^0;
sbit INT0_PIN = P3^2;
unsigned short Tlow,Thigh;
unsigned short Tlow1,Thigh1;
char Tactive=0;
unsigned short timer0_value(void)
{
if(TF0)return 0xFFFF;
return TH0*256+TL0;
}
void timer0_reset(void)
{
TF0 = TH0 = TL0 = 0x00;
}
void int0_irq(void) interrupt 0 // 0:INT0 1:TIMER0 2:INT1 3:TIMER1 4:SERIAL
{
EX0 = 0; // disable int0 interrupt
TR0 = 0; // stop timer0
Thigh = timer0_value();
Tlow1 = Tlow;
Thigh1 = Thigh;
Tactive = 1;
timer0_reset();
TR0 = 1; // start timer0
while(1)
{
if(INT0_PIN)break;
if(TF0)break;
}
TR0 = 0; // stop timer0
Tlow = timer0_value();
timer0_reset();
TR0 = 1; // start timer0
EX0 = 1; // enable int0 interrupt
}
void int0_init(void)
{
IT0 =1; // mode: high to low interrupt
EX0 =1; // enable int0 interrupt
}
void timer0_init(void)
{
TMOD = (TMOD&0xF0)|0x01;
TF0 = 0;
TR0 = 1;
}
void uart_init(void)
{
ES = 0; // Disable Serial Interrupt
SCON = 0x50; // Mode2,N,8,1
PCON = 0x80; // double baurdate
TH1 = 0xFF; // baudrate:57600@11.0592M
TL1 = 0xFF;
TMOD= (TMOD&0x0F)|0x20;
TR1 = 1; // Timer1 Start
TI = 0;
}
void uart_write(unsigned char ch)
{
SBUF=ch;
while(!TI);
TI=0;
}
void main(void)
{
int0_init();
timer0_init();
uart_init();
EA =1;
while(1)
{
if(Tactive)
{
Tactive=0;
uart_write(Tlow1/256);
uart_write(Tlow1%256);
uart_write(Thigh1/256);
uart_write(Thigh1%256);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -