定时器1秒控制小灯
#include<STC15F2K60S2.H>
unsigned int seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
unsigned char t,g;
void main(void){
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
AUXR=0X80;
TMOD=0Xf0;TH0=0X28;TL0=0X00;
TF0=0;TR0=1;
EA=1;ET0=1;
while(1);
}
void time0(void) interrupt 1
{
t++;
if(t==200)
{
P00=~P00;
t=0;
}
}
定时器1秒控制数码管0-9
#include<STC15F2K60S2.H>
unsigned int seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
unsigned char t,g;
void Timer0Init(void);
void main(void){
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF;
Timer0Init();
EA=1;ET0=1;
while(1);
}
void Timer0Init(void)
{
AUXR |=0X80;
TMOD &=0XF0;
TL0=0X00;
TH0=0X28;
TF0=0;
TR0=1;
}
void time0(void) interrupt 1
{
t++;
if(t==200)
{
P0=seg[g];
g++;
if(g==10)
g=0;
t=0;
}
}
外部中断
#include<STC15F2K60S2.H>
void key_scan(void);
void delayms(int ms);
unsigned char led;
void main(void){
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
IT0=0;
EX0=1;EA=1;
while(1){
key_scan();
P0=~(0X01<<led);
delayms(200);
led++;
if(led==8)
led=0;
}
}
void key_scan(void){
if(P30==0)
{
delayms(5);
if(P30==0)
{
P0=0X00;
delayms(100);
}
while(!P30);
}
}
void delayms(int ms){
int q,w;
for(q=0;q<ms;q++)
for(w=845;w>0;w--);
}
void int0() interrupt 0
{
if(P32==0){
P0=0XFF;
delayms(200);
}
if(P32==1){
P0=0X00;
delayms(200);
}
}