#include<reg52.h> #define uchar unsigned char #define uint unsigned int unsigned char code table[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delay(unsigned int z) { unsigned int i,j; for(i=0;i<z;i++) for(j=0;j<1000;j++); } void main() { uint a; while(1) { EA=1; EX0=1; EX1=1; IT0=1; IT1=1; PX0=0; PX1=1; for(a=0;a<8;a++) { P1=table[a]; delay(50); } } } void int0_isr(void) interrupt 0 using 0 { uint b; for(b=0;b<3;b++) { P1=0xff; delay(50); P1=0x00; delay(50); } EX0=0; } void int1_isr(void) interrupt 2 using 1 { uint c; for(c=0;c<3;c++) { P1=0x0f; delay(100); P1=0xf0; delay(100); } EX1=0; }
时间: 2023-10-27 15:06:08 浏览: 129
AT89S52语言常用程序.doc
这是一段基于STC单片机的程序代码,使用的是C语言。其中包含了两个中断服务子程序int0_isr和int1_isr,分别对应外部中断0和外部中断1。程序中使用了一个常量数组table[8],用来存储8个二进制数对应的十六进制数值。在主函数main()中,程序不断循环,通过设置中断使能位EA、EX0、EX1、IT0、IT1、PX0和PX1,来启用外部中断0和外部中断1。在每次循环中,依次将数组table中的8个值输出到P1端口,从而实现LED灯的闪烁效果。当外部中断0或外部中断1触发时,对应的中断服务子程序会被调用,从而实现不同的LED灯闪烁效果。
阅读全文