①中断程序 延时2s 定时器0
void init_timer()
{
TMOD|=0X01; //DIS
EA=1;
ET0=1;
TR0=1;
}
void main(void)
{
P1=0XFF;
init_timer();
while(1)
{P1=~P1;}
}
void timer_isr(void) interrupt 1
{
static int count=100;
while(count--)
{TH0=(65536-50000)/16;
TL0=(65536-50000)%16;
}
}
② 按键去抖 >10ms-20ms 必须要添加,一定要有while才能实现
while(1)
{
if(!KEY_PORT)
{
for(i=0;i<25000;i++);
if(!KEY_PORT)
{
while(!KEY_PORT);
LED_PORT=~LED_PORT;
}
}
}
3.单片机延时问题 两个for循环嵌套 在汇编中本身纯在10s延时 12MHZ
for(k=0;k<5000;k++)
for(j=0;j<20;j++) 100ms----------1s
4.数码管
int i,j,k;
工阳: char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
共阴//char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};