//对51不是很熟悉了,抄来的,自己修改了下。仿真了,没有问题
#include
#include
void timer0_ISR(void) interrupt 1 using 3
{
P1 = ~P1;
TL0 = 0XFF;
TH0 = 0XFF;
TF0 = 0;
}
void timer_init(void)
{
IE=0x82; //寮€镐讳腑鏂璄A锛屽厑璁稿畾镞跺櫒0涓柇ET0
TCON=0x00; //锅沧瀹氭椂鍣紝娓呴櫎镙囧织
TMOD=0x02; //宸ヤ綔鍦ㄥ畾镞跺櫒0镄勬ā寮?涓?
TH0=0x38; //璁剧疆阅嶈浇鍊?
TL0=0x38; //璁剧疆瀹氭椂鍣ㄥ垵鍊?
TR0=1; //鍚姩瀹氭椂鍣?
}
void main(void)
{ //P1 = 0XFF;
timer_init();
while (1)
;
}
#include
#define uchar unsigned char
uchar a
void main()
{
a=0;
EA=1; //开总中断
EX0=1; //开外部中断0
IT0=1; //跳变沿触发
P1=0; //全亮
while(1); //程序在此循环等待中断
}
void rupt()interrupt 0
{
a=~a;//每来一次中断,取反
P1=a;
}
你这个图也不对呀,建议你自己捉摸一下。另楼上给的程序和这个图也对不上呀,不能用的。
#include
char x;
void main()
{
x=0xff;
EA=1;
EX0=1;
while(1)
{
P0=x;
}
}
INT0_LED() interrupt 0
{
x=~x;
}
下列程序,经过调试,完全符合题目要求.
ORG 0000H
LJMP START
XRL P1, #255
RETI
START:
SETB IT0
SETB EX0
SETB EA
SJMP $
END