中断程序一
#include
void delay(unsigned int a) {
unsigned int b; b=a;
while(b>0) b--; }
void main() {
int i,j;
unsigned code A[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; EA=1;//打开总中断
EX0=1;//打开外部中断0。
IT0=0;//选择其为低电平有效有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。 P2=0; P0=j; P1=0xfe; while(1) {
j=0;
for(i=0;i<8;i++) {
P2=i; P0=A[j];
delay(50000); j++; }
for(i=7;i>=0;i--) {
P2=i; P0=A[j];
delay(50000); j++; } } }
void exist() interrupt 0//中断子程序,其中“0”为外部中断的序号 {
P1=_crol_(P1,1); delay(50000); }
定时程序;
include
unsigned int i=0,j=0,t;
unsigned code a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void main() {
TMOD=0x01;//对TMOD赋值,以确定T0和T1的工作方式。
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;//定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。对高8位和低8位赋值。 EA=1;//开总中断
ET0=1;//则对IE赋值,开放中断
TR0=1;//使TR0或TR1置位,启动定时/计数器定时。 while(1) {
if(t==20) { t=0; if(j==8) j=0;
if(i==16) i=0; P2=j; P0=a[i]; i++; j++; } } }
void time() interrupt 1//定时子程序,其中“1”为定时/计数器序号 {
TH0=(65536-50000)/256; TL0=(65536-50000)%6; t++;
}