单片机实验――利用中断控制LED灯(精)
单片机实验——利用中断控制LED

单片机实验——利用中断控制LED本实验利用中断控制单片机的GPIO口控制LED的亮灭,达到了在不同的时间间隔下实现LED的闪烁、呼吸等效果。
本实验可以让初学者更好地理解与掌握单片机的中断和GPIO 控制。
一、实验器材准备1. STC12C5A16S2单片机开发板2. LED灯3. 1KΩ电阻4. 杜邦线二、实验原理本实验中,我们需要利用单片机的GPIO口控制LED灯的亮灭。
其中,单片机的GPIO 口需要设置为输出模式,即控制LED灯亮灭的电平。
在运行中,通过改变电平状态来控制LED的亮灭。
而中断控制则是为了实现不同的效果,比如在不同的时间间隔下闪烁、呼吸等。
中断是指硬件或软件的外部事件,它会打断当前正在执行的程序,转为执行中断程序。
在单片机编程中,我们可以采取中断方式实现不同的操作。
三、实验步骤1. 首先,连接电路。
将LED作为单片机GPIO控制的输出口,同时连接一个1KΩ的电阻,如下图:2. 打开Keil软件,新建工程,导入STC12C5A16S2头文件。
3. 在代码中,首先需要定义GPIO的引脚,接下来进行中断初始化设置。
4. 编写闪烁程序,实现LED在不同时间间隔下闪烁,如下:```cvoid Led_Flash(void){Led_ON(); //LED灯亮Delay(500); //延时等待500msLed_OFF(); //LED灯灭Delay(500); //延时等待500ms}```5. 编写呼吸程序,实现LED在不同时间间隔下进行呼吸灯效果。
```cvoid Led_Breath(void){uint8 i;uint16 j;for (i = 0; i < 10; i++) //变量i控制灯的亮度{for (j = 0; j < 2000; j++) //变量j控制每次延时等待的时间{Led_ON();Delay_us(i * 20);Led_OFF();Delay_us((9 - i) * 20);}}}```6. 编写中断控制程序,通过定时器中断来实现LED的不同效果。
采用外部中断的方式控制彩灯的各种变化运行

单片机实验报告21、实验目的:学会中断的使用方法采用外部中断的方式控制彩灯的各种变化运行2、实验工具单片机最小应用系统、THKL-C51仿真器、3、实验步骤1.首先分析题目的要求2.根据要求画出流程图3.确定主程序的内容(根据本题要求,主程序中主要写的LED灯向左移的程序,然后写向右移的程序,接下来是LED随机亮的程序(主要是通过查表法来实现),然后调用外部中断程序(主要是标志量flag 的自增程序),然后将整个程序编写完整)4.打开Keil uV ision 4软件,建立新的工程和文件,将主程序写入文件中,并且调试至无错误。
连接好外部的硬件系统,开始调试并运行,查看效果,并且记录结果。
4、实验主要程序#include <reg51.h>#include<stdio.h>#include<intrins.h>#define uchar unsigned charuchar flag=0; //定义变量void delayms() //定义延迟函数(250*250*2=0.125秒){unsigned char m,n;for(m=0;m<250;m++)for(n=0;n<250;n++);}void main(){uchar inum,i; //定义变量uchar dispalycode[8]={0x7e,0xbd,0x6a,0x5e,0x15,0x36,0x9b,0xaa}; //定义数组uchar LED=0xfe;P0=LED; // 亮一盏LED灯EA=1; //开启中断总控制位IT0=1; //外部0中断,下降沿触发EX0=1; //允许外部中断0中断while(1) //进入循环{if(flag==0) //判断标志位{delayms(); //延迟LED=_crol_(LED,1); //一盏LED灯循环左移P0=LED;}if(flag==1) //判断标志位{delayms(); //延迟LED=_cror_(LED,1); //一盏LED灯循环右移P0=LED;}if(flag==2) //判断标志位{inum=0;for(i=0;i<8;i++){inum++;delayms();P0=dispalycode[inum];} //查表法LED灯随机闪}}}void intersvr0(void) interrupt 0 using 1 //INT0中断服务程序{flag++;//标志位自增if(flag>2) flag=0; //判断标志位,大于2则置0}5、实验结果按键后给单片机下降沿脉冲,按下第一次键后LED灯依次向左移,再按下第二次键后LED灯依次向右移,再按下第三次键后LED灯随意亮,记下来按键后就重复前三次的情况,与题目的要求相符合。
实验、中断控制的8个LED灯轮流点亮电路

实验八、中断控制的8个LED灯轮流点亮电路专业: 班级:姓名: 学号:成绩:一、实验目的1.掌握中断程序的分析方法和设计方法。
2.学习电平触发方式及负脉冲触发方式的电路设计方法。
3.学习读程序,并能写出中断初始化程序段。
二、实验器材单片机开发设备一套。
三、实验内容和步骤试设计一个用单片机中断控制的8个LED灯轮流点亮的仿真控制系统,当按下一个按键之后,LED1灯亮,再按下一个按键后,彩灯顺次点亮一个。
要求按照电平触发和负脉冲触发两种方式来设计电路并进行程序设计。
电平触发方式下的仿真图:附加题:请设计一个电路,能实现开关控制的数码管显示0-9数字。
电平触发方式下的程序:ORG 0000HAJMP MAINORG 0013HAJMP SERVERORG 0030HMAIN:MOV A,#01HCLR IT1SETB EX1SETB EA SJMP $ORG 0200H SERVER:CLR P3.0 NOPNOPSETB P3.0MOV P1,ARL ARETIEND负脉冲触发方式下接于P3.3端口的仿真图:负脉冲触发方式下的程序:ORG 0000HAJMP MAINORG 0013HAJMP SERVERORG 0030HMAIN:MOV A,#11111110B MOV P1,A SETB IT1SETB EX1SETB EASJMP $ORG 0200HSERVER:CLR P3.3NOPNOPSETB P3.3MOV P1,ARL ARETIEND。
裸机定时器中断控制LED灯程序设计实验报告

裸机定时器中断控制LED灯程序设计一、实验要求:基于mini2440开发板,设计裸机定时器中断控制LED灯闪烁的程序。
二.设计目的1,巩固学习嵌入式软件方面的基本知识,进一步熟悉基本概念。
2,熟练常用控件,文件,图形等方面的操作了解基本的流程。
3,运用所用学的嵌入式知识,编写出较为实用的小软件,增进对一些实际问题的软,硬件知识的掌握。
4,培养查阅资料,独立思考问题的能力。
三. 实验步骤:四.基本思路及关键问题的解决方法;基本思路:1. 按照步骤程序设计原理说明,使用”CodeWarrior for ARM Developer Suite”软件编写程序并进行编译,建立一个新的文件单击【File】菜单中的【New File】选项,然后出现下面的对话框,输入文件名(加上后缀“.c”),单击保存按钮,在编译过程中如果出现错误,修改程序直到没有错误为止,编译过程中出现警告一般可以不必考虑,但特殊时也要通过修改程序消除警告。
程序编写完成后,将程序所在文件保存到2440test.mcp中,如图所示:2.用开发板测试程序代码:(1)首先设置开发板的拨动开关S2 为Nor Flash 启动,连接好附带的USB 线和电源(可以不必连接串口线)。
(2)设置超级终端(3)开机进入BIOS 模式,此时开发板上的绿色LED1 会呈现闪烁状态,其启动界面,如下图:输入”d”(4)安装USB 下载驱动(5)点击DNW 程序的“USB Port” “Transmit”,选择这个2440test.mcp文件,接着点“打开”,这样就开始下载了五.流程图及电路原理图1.绘制所需的流程图,如图所示:六.课程设计心得体会此次课程设计中我们的收获:我了解到了和小组成员合作的愉快,我意识到了知识的乐趣性,并感觉到当知识运用于实践的时候是一件多么幸福的事情。
我也发现自己的知识功底还远远不够。
平时不仅要将知识点理解掌握,还得勤动手做实验。
在以后的学习中我会更努力,在掌握理论知识的基础上,提高自己的动手能力。
stm32单片机设计定时器中断实现1s的led灯闪烁知识应用

stm32单片机设计定时器中断实现1s的led灯闪烁知识应用要实现1s的LED灯闪烁,可以使用STM32单片机的定时器中断来控制LED的开关。
以下是实现的步骤:1. 配置定时器:选择一个定时器(如TIM2)并设置适当的预分频和计数值,以实现1s的定时周期。
2. 配置中断:使能定时器中断,并将中断优先级设置为适当的值(较高优先级)。
3. 初始化LED引脚:将LED引脚设置为输出,并初始化为高电平(LED关闭)。
4. 编写中断处理程序:在中断处理程序(如TIM2_IRQHandler)中,切换LED引脚的状态。
例如,如果LED引脚当前为高电平,则将其设置为低电平,反之亦然。
5. 启动定时器:启动定时器以开始定时。
整个步骤如下所示的代码示例:```c#include "stm32fxx.h"void TIM2_IRQHandler(void){if(TIM2->SR & TIM_SR_UIF){TIM2->SR &= ~TIM_SR_UIF; // 清除中断标志位// 切换LED引脚状态if(GPIOC->ODR & GPIO_ODR_ODR0)GPIOC->ODR &= ~GPIO_ODR_ODR0; // 关闭LEDelseGPIOC->ODR |= GPIO_ODR_ODR0; // 打开LED}}int main(){// 初始化LED引脚RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN; // 使能GPIOC时钟GPIOC->MODER |= GPIO_MODER_MODER0_0; // 将PC0设置为输出模式GPIOC->OSPEEDR |= GPIO_OSPEEDR_OSPEED0; // 设置PC0输出速度// 配置定时器RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // 使能TIM2时钟TIM2->PSC = 8399; // 将预分频设置为8400-1,得到10kHz 的计数频率TIM2->ARR = 9999; // 将计数值设置为10000-1,得到1s的定时周期// 配置中断TIM2->DIER |= TIM_DIER_UIE; // 使能更新中断NVIC_EnableIRQ(TIM2_IRQn); // 使能TIM2中断NVIC_SetPriority(TIM2_IRQn, 0); // 设置TIM2中断优先级为最高// 启动定时器TIM2->CR1 |= TIM_CR1_CEN; // 启动TIM2定时器while(1){// 程序主循环}return 0;}```以上代码使用了TIM2定时器和PC0引脚作为LED灯的控制。
用按键(采用外部中断0或1的方式)控制彩灯的运行

实验一标志寄存器实验目的:用按键(采用外部中断0或1的方式)控制彩灯的运行。
实验方法:1、通过在在中断过程中,设置标志变量flag(取值为0表示左移,1表示右移,2自定义)来判断按键被按下,每次按下切换一种显示方式。
2、当flag>2,则被清零,主程序按照flag的取值,分别执行不同的显示方式。
3、为了确保外部中断信号可靠,可对按键采取软件消抖处理。
实验程序编写:#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuint flag=0;uchar a[]={0xe7,0xdb,0xbd,0x7e};uchar LED=0xfe;uint i;void delay(unsigned int x) //定义延时函数{uchar i;while(x--){for(i=0;i<125;i++) //通过循环实现延迟功能{;}}}void intersvr0(void) interrupt 0 using 1 //INTO中断服务程序{flag=flag+1;if (flag>=3)flag=0;}void main(void){P0=0x00; //初始化p0口保持LED全亮EA=1; //开启中断总控制位IT0=1; //开启外部中断0控制位,采用边沿触发EX0=1; //允许中断0中断while(1){if (flag==0){P0=0x01;{LED=_crol_(LED,1);P0=LED;delay(500);}}if (flag==1){P0=0x80;{LED=_cror_(LED,1); P0=LED;delay(500);}}if (flag==2){{for (i=0;i<3;i++){LED=a[i];P0=LED;delay(500);P0=0xff;}}}}; //判断是否有按键按下,若有按键按下执行中断服务程序}实验结果:当运行后,通过按动一个键,彩灯在左移,右移和自定义花样(查表法)三种闪亮方式之间顺序切换。
实验四—— LED灯和数码显示器的中断控制

实验课程:单片机原理及应用实验名称: 实验四—— LED灯和数码显示器的中断控制实验日期: 2013 年 4 月 11 日一、实验目的掌握外部中断的工作原理,学会中断程序设计。
二、实验内容1、按图绘制实验四电路原理图:2、采用外部中断原理编程,按键K1、K2均设置为下降沿触发方式,且为自然优先级:3、编写实验四C51程序,实现如下功能:K1对应于D1状态反转: K2对应于0 F间的数码管加一计数显示:3、观察仿真结果,完成实验报告。
三、实验要求提交的实验报告中应包括:电路原理图,外部中断工作原理阐述,源程序, 运行效果图,实验小结。
提交实验报告的电子邮件主题及存盘1、电路原理图(含电路分析)图1 实验原理图电路分析:图1为实验原理图。
电路由80C51芯片,两个开关K1、K2,电阻,LED灯,LED显示器组成。
其中LED显示器接在P2.0~P2.6上并采用共阴极接法,上拉电阻及LED灯接在P0.2,因为P0口内部没有上拉电阻,为使漏极开路有效,必须通过外接上拉电阻与电源连通。
K1、K2分别接INT0:P3.2)和INT1:P3.3)引脚,公共端接地,单击后可产生下降沿脉冲:D1接P0.4引脚,高电平驱动 ,通过上拉电阻接电源:共阴极数码管LED1接P2口,静态显示。
2、外部中断工作原理阐述:以K1为例)当K1按下后,外部中断信号由INT0引脚传送进来。
外部中断电源可以分为两种控制方式,即电位触发式和下降沿触发式,试验中使用的是脉冲触发,即下降沿出发。
下降沿中断方式是INT0引脚由1变化到0的瞬间产生中断,而此时IE0置1,工作标志设定,此工作标志会一直保留着,知道执行完中断服务程序后才会清除。
K1接于端口P3.2,按压后的电平负跳变可分别产生INT0中断请求。
INT0中断响应后取端口P0.4电平,使指示灯D1的状态反转。
3、C51程序:含流程图与注释语句)程序流程图如图2图2 程序流程图C51程序:#include<reg51.h>charled_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5 e, 0x79,0x71}; //定义字符型数组变量led_mode,并初始化为字符0~F的共阴极显示码sbit P0_4=P0^4; //定义P0.4口为可位寻址型变量P04int count=0; //定义字符型计数器变量count:并初始化为0int0_key() interrupt 0{ //定义K1的中断函数int0_keyP0_4=!P0_4; //取反P04}int1_key() interrupt 2 { //定义K2的中断函数int1_keycount++; //计数变量count增1if(count>0x0f) //如果count值超过0x0f:则count恢复0值count=0;P2=led_mod[count]; //P2口输出count值的显示码}void main() //定义主函数{IT0=1;EX0=1;EA=1; //设置脉冲触发方式:外部中断允许:总终端允许 IT1=1;EX1=1;P0_4=0; //P0.4灭灯P2=0x3f; //P2口显示字符“0”while(1); //程序原地循环}4、仿真运行效果图3为仿真运行效果图。
实验四led灯和数码显示器的中断控制

实验四LED灯和数码显示器的中断控制一、实验目的:掌握外部中断的工作原理,熟悉中断编程及Keil平台软件调试方法。
二、实验原理:实验电路如图A.53所示。
K1和K2分别接于端口P3.2和P3.3,按压后的电平负跳变可分别产生INT0中断请求和INT1中断请求。
INT0中断响应后取端口P0.4电平,使指示灯D1的状态反转,INT1中断响应后使计数值增1并送给数码管LED显示。
电路原理图及中断原理分析:按键K1接外部中断0,K2接外部中断1。
P0.4接指示灯D1,P2口接数码管,每按一次K1键电平产生负跳变,INT0中断响应后取端口P0.4电平,D1的状态反转;每按一次K2键产生负跳变,INT1中断响应使计数值增1并使数码管显示该数值,变化范围为0~F。
三、实验步骤:(1)、按照表A.5所示将元件添加到Proteus ISIS对象选择列表中,并仿照图A.53完成电路原理图绘制。
(2)、在Keil中编写C51程序,并使之编译通过。
(3)、在Keil中加载编译后的可执行文件,并控制Proteus中的程序仿真运行。
Category Reference Value Microprocessor ICs U1 80C51Optoelectromics D1 LED-GREENSwitches&Relays K1~K2 BUTTONResistors R1~R2/100 RES Optoelectronics LED 7SEG-COM-CAT-GRN四、实验要求:(1)、主函数在程序初始化完成后进入原地循环状态,等待中断请求。
(2)、两路外部中断均设为下降沿触发方式,且为自然优先级。
(3)、计数变量初值为0,变化范围为0~F。
(4)、实验报告内容包括:电路原理图及分析、中断原理分析,C51源程序(含注释语句),仿真运行截屏图,实验小结。
五、C51源程序如下:#include< reg51.h>char led_mod[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71};char flag;sbit p0_4= P0^4;void delay(unsigned int time){unsigned int j =0;for(;time>0;time--)for(j=0;j<125;j++);}int0_key () interrupt 0{p0_4=!p0_4;}int1_key () interrupt 2{delay(200);P2=led_mod[flag%16];delay(200);flag++;}void main(void) {flag=0;IT0= 1;EX0= 1;EX1= 1;EA= 1;while(1);}六、试验结果:(1)开始运行时如下图:(2)、按键后运行图如下:实验结果分析:由运行结果可以看出,按键K1产生外部中断0控制D1的状态,使指示灯D1由亮到暗一次变化;按键K2产生外部中断1使LED显示0~F不同数值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实验——利用中断控制LED灯
1.实验目的
(1掌握单片机中断的基本原理。
(2掌握单片机中断程序的编制方法。
2.预习要点
(1单片机中断基本原理
(2中断程序编制方法
3.实验设备
计算机、单片机实验箱、信号发生器。
4.实验内容
基本要求:
将信号发生器输出的脉冲信号连接到CPU的INT0上,将CPU的P1.0到P1.7和八个LED连接,脉冲信号为5V、100Hz,每输入一百个脉冲LED灯亮一次,并且LED灯顺序循环移位一次,形成跑马灯。
扩展要求:
提高输入脉冲频率,但跑马灯的显示频率不变。
实验4
ORG 0000H
AJMP MAIN
;******************************************
;中断子程序入口地址
ORG 0003H
LJMP EXINT0
;******************************************
;主程序
ORG 0030H
MAIN:MOV SP,#70H
SETB IT0 ;设置为下降沿触发
SETB EX0 ;开INT0的中断开关
SETB EA ;开总中断开关
MOV R0,#01H ;只让一盏灯亮,R0赋给P1口
MOV R3,#00H ;R3用来记中断次数
MOV A,R0
MOV P1,A
HERE:SJMP HERE ;死循环,还有另外一种形式是SJMP $ ;******************************************
;外中断0服务程序
EXINT0:INC R3 ;每来一次中断R3自加1
CJNE R3,#100,NEXT ;当来了100次中断之后,R3清零,然后P1口的MOV R3,#00H ;数左移一位,也就是让下一个LED亮
MOV A,R0
RL A
MOV P1,A
MOV R0,A ;保存左移之后的结果
NEXT:RETI
;******************************************
END
实验4扩展
ORG 0000H
AJMP MAIN
;******************************************
;中断入口地址
ORG 0003H
LJMP EXINT0
;******************************************
;主程序
ORG 0030H
MAIN:MOV SP,#70H
;初始化外中断0
SETB IT0
SETB EX0
SETB EA
;初始化8155
MOV DPTR,#0100H
MOV A,#03H
MOVX @DPTR,A
;显示缓存区
MOV 30H,#1
MOV 31H,#2
MOV 32H,#3
MOV 33H,#4
MOV 34H,#5
MOV 35H,#6
MOV 36H,#7
MOV 37H,#8
MOV 38H,#9 ;这一句后面的CJNE会用到,用来判断1-8是否已经显示完了
MOV R2,#00H ;用R2来记中断来的次数
MOV 40H,#01H ;用40H存放LED的状态
MOV A,40H
MOV P1,A
MOV R0,#30H ;显示缓存区首地址给R0
MOV R4,#0FEH ;字位送R4,因为只需要亮一个数码管,所以选择静态显示,没必要用动态显示
LOOP:LCALL DISPLAY ;循环调用显示程序
SJMP LOOP
;******************************************
;中断子程序
EXINT0:INC R2
CJNE R2,#100,NEXT ;来100次中断之后才进行操作
MOV R2,#00H
MOV A,40H ;移动LED
RL A
MOV P1,A
MOV 40H,A
INC R0 ;让显示的数+1
CJNE @R0,#9,NEXT ;如果到了9就回到1,因为我们只显示1-8 MOV R0,#30H
NEXT:RETI
;******************************************
;显示子程序
DISPLAY:
MOV DPTR,#0102H ;送字位
MOV A,R4
MOVX @DPTR,A
MOV DPTR,#DTAB ;查表,送字形
MOV A,@R0
MOVC A,@A+DPTR
MOV DPTR,#0101H
MOVX @DPTR,A
LCALL DELAY
LD1:RET
;****************************************** ;字形表DTAB:
DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH ;0-F
DB 77H,7CH,39H,5EH,79H
DB 71H
;****************************************** ;延时1ms子程序DELAY:
MOV R7,#02H
DEL1:MOV R6,#0FFH
DEL2:DJNZ R6,DEL2
DJNZ R7,DEL1
RET
;****************************************** END
ORG 0000H
AJMP MAIN
;中断入口地址
ORG 0003H
LJMP EXINT0
;******************主程序
ORG 0030H
MAIN:MOV SP,#70H
;初始化外中断0
SETB IT0
SETB EX0
SETB EA
;初始化8155
MOV DPTR,#0100H
MOV A,#03H
MOVX @DPTR,A
;显示缓存区
MOV 30H,#1
MOV 31H,#2
MOV 32H,#3
MOV 33H,#4
MOV 34H,#5
MOV 35H,#6
MOV 36H,#7
MOV 37H,#8
MOV 38H,#9
MOV 40H,#01H ;用40H存发光二极管的状态
MOV R2,#00H
MOV A,40H
MOV P1,A
MOV R0,#30H
MOV R4,#0FEH
LOOP:LCALL DISPLAY SJMP LOOP
;************************* ;中断子程序
EXINT0:INC R2
CJNE R2,#100,NEXT
MOV R2,#00H
MOV A,40H
RL A
MOV P1,A
MOV 40H,A
INC R0
CJNE @R0,#9,NEXT1
MOV R0,#30H
NEXT1:MOV A,R4
RL A
MOV R4,A
NEXT:RETI
;显示子程序
DISPLAY:MOV A,R4
MOV DPTR,#0102H
MOVX @DPTR,A
MOV DPTR,#DTAB
MOV A,@R0
MOVC A,@A+DPTR
MOV DPTR,#0101H
MOVX @DPTR,A
LCALL DELAY LD1:RET ;字形表 DTAB: DB
3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH ;延时 1ms 子程序 DELAY: MOV
R7,#02H DEL1:MOV R6,#0FFH DEL2:DJNZ R6,DEL2 DJNZ R7,DEL1 RET END ;说明: ;R4 是保存数码管字位 ;R3 ;R2 是保存中断次数满 100 清 0 ;R1 ;R0 是保存数码管的字型实验 5(1 ORG 0000H SJMP
MAIN ;****************************************8*********** ;中断入口地址ORG 000BH LJMP T0INT ;************************************************ ;主程序 ORG 0030H MAIN:MOV SP,#70H MOV TMOD,#01H ;T0 选择方式 1,16 位
定时器 MOV TH0,#0F6H ;#9EH ;因为用示波器观察 20HZ 的方波不易观察,频率太低了,所以我换成了 MOV TL0,#3CH ;#58H ;200HZ 的,原理都是一样的,这样只是为了让波形更容易观察,后者是 20HZ 的初值 SETB EA ;开总中断 SETB ET0 ;开定时器 0 中断 SETB TR0 ;启动定时器 0 SJMP$ ;死循
环 ;********************************************************
;定时器 0 中断子程序 (25ms 2.5ms 来一次中断 T0INT:MOV TH0,#0F6H ;#9EH ;重新赋初值 MOV TL0,#3CH ;#58H CPL P1.1 ;改变电平
RETI ;******************************************************。