单片机实验二
单片机实验二 拆字程序 实验报告

ORG 30H
00H
00H
30H
MOV A,30H
00H
30H里的数
30H里的数
ANL A,#0FH
30H里的数
高四位清零,低四位不变
高四位清零,低四位不变
MOV 22H,A
22H里的数
A高四位清零,低四位不变
A高四位清零,低四位不变
MOV A,30H
A高四位清零,低四位不变
30H里的数
30H里的数
将累加器A内容送片内RAM的20H单元
赋值:A=30H
将累加器A的高低位互换
将互换高低位后的累加器A高四位清零,低四位不变
将累加器A内容送片内RAM的21H单元
结束
单步运行程序,填写下论分析值
实际运行结果值
ORG 00H
00H
00H
00H
LJMP STAR
00H
00H
SWAP A
30H里的数
30H里的数高低位数转换
30H里的数高低位数转换
ANL A,#0FH
30H里的数高低位数转换
高四位清零,低四位不变
高四位清零,低四位不变
MOV 21H,A
21H里的数
A里面的数
A里面的数
SJMP $
00H
00H
00H
END
00H
00H
00H
思考
如何用断点方式调试本程序。
把光标指向语句左边,然后单击,会出现一个符号。同样的方法对需要在结束语句左边做同样的事情,然后全速运行,按下停止按钮,程序就会在相应的位置停止。
佛山科学技术学院
实验报告
课程名称实验项目拆字程序
专业班级姓名学号
单片机实验二

单片机实验报告二系部名称:专业班级:学号:姓名:指导教师:实验成绩日期实验二单片机I/O口实验——模拟开关灯一、实验要求利用单片机、按钮开关和发光二极管,构成一个模拟开关灯的系统。
单片机P3.0引脚接开关,P1.0接发光二极管的阴极,当开关闭合时,发光二极管亮;开关打开时,发光二极管灯灭。
二、实验目的1.了解单片机I/O口输入输出的使用。
2.掌握单片机I/O口位操作的编程。
3.掌握简单的分支程序的设计。
三、实验内容1.开关状态的检测单片机的P3.0脚接有一个按钮开关K,单片机对开关K状态的检测是检测单片机的P3.0端口的输入电平,只有高低电平两种。
当开关K闭合时,即P3.0脚输入为低电平;当开关K打开时,P3.0脚输入为高电平。
2.输出控制使用共阳极发光二极管,阳极接+5V,阴极接P1.0端口。
当P1.0端口输出高电平,即P1.0=1时,这时发光二极管D1熄灭;当P1.0端口输出低电平,即P1.0=0时,这时发光二极管D1亮。
源代码:ORG 00HSTART: JB P3.0,X1CLR P1.0AJMP START X1 : SETB P1.0AJMP STARTEND四、实验结果五、实验心得通过本次实验基本了解了用单片机设计开关灯的工作流程,通过编写汇编程序实现了开关灯的设计,复习并更加掌握汇编语言,进一步掌握了P1口和P3口的功能,复习了汇编语言中跳转指令的用法。
实验中不时出现一些小的错误,让我深刻体会到,理论与实践的差距。
我们应该多做实验,提高自己的动手能力。
单片机实验 实验二 P 口输入 输出实验

实验二 P1口输入、输出实验一、实验目的学习Pl口的使用方法。
学习延时子程序的编写和使用。
进一步熟悉星研Star16L仿真器系统的操作,和EL-Ⅱ型通用接口板实验电路结构,学习使用PROTEUS仿真软件实现单片机的虚拟仿真。
掌握虚拟仿真与实际系统仿真的有机衔接。
二、实验仪器和设备PC机、星研Star16L仿真器系统+仿真头PODPH51(DIP)、EL-Ⅱ型通用接口板实验电路,PROTEUS仿真软件。
三、实验内容1)P1口做输出口,经过74LS04反相器接八只发光二极管,编写程序,使发光二极管循环点亮。
2)(选作)P1口既做输入又做输出,在P1.0~P1.3口接四个平推开关,通过开关的不同位置向P1.0~P1.3输入不同的状态,然后利用输入指令读取所设开关状态,为验证输入结果的正确与否,将它们输出到P1.4~P1.7,经过74LS04反相器驱动发光二极管。
四、实验结果1)循环点亮八只发光二极管。
取P1.0口接出第一个二极管,以此类推,第八个接P1.7口。
Proteus 仿真图①循环左移,即从第一个二极管开始点亮到第八个二极管实验程序:ORG 0000HSTART:MOV R2,#8MOV A,#01H ;先让第一个发光二极管点亮LOOP: MOV P1,A ;从P1口输出到发光二极管LCALL DELAYRL A ;循环左移(从第一个发光二极管开始一直往下一个二极管)DJNZ R2,LOOP ;判断移动是否超过8位,未超过则继续循环LJMP START ;循环发光DELAY:MOV R5,#5 ;延时0.5秒子程序DEL1: MOV R6,#200DEL2: MOV R7,#126DEL3: DJNZ R7,DEL3DJNZ R6,DEL2DJNZ R5,DEL1RETEND仿真结果:发光二极管从D1开始发光,依次往下到D8,然后循环这一过程。
实验结果:发光二极管从第一个开始发光,依次往左到第八个,然后循环这一过程。
单片机实验报告范文

单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。
二、实验器材及原理1.实验器材:STC89C52单片机、电源、晶振、按键、LED灯、蜂鸣器等。
2.实验原理:单片机是一种微处理器,能够完成各种复杂的功能。
通过学习单片机的工作原理和编程方法,可以控制各种外围设备,实现不同的功能。
三、实验内容及步骤1.实验一:点亮LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,点亮LED灯。
2.实验二:按键控制LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将按键和LED灯与单片机相连。
(3)编写程序,实现按下按键控制LED灯亮灭。
3.实验三:数码管显示步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将数码管与单片机相连。
(3)编写程序,将数字输出到数码管上显示。
4.实验四:定时器应用步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,实现定时器功能。
四、实验结果及分析1.实验一:点亮LED灯LED灯成功点亮,证明单片机与外部设备的连接正常。
2.实验二:按键控制LED灯按下按键后,LED灯亮起,松开按键后,LED灯熄灭。
按键控制LED 灯的效果良好,说明单片机的输入输出功能正常。
3.实验三:数码管显示数码管成功显示数字,说明单片机能够实现数字输出功能。
通过程序设计,可以实现数码管显示不同的数字。
4.实验四:定时器应用定时器正常运行,能够实现精确的定时功能。
通过调节定时器的参数,可以实现不同的定时功能。
五、实验总结通过本次实验,我们学习了单片机的基本原理和使用方法。
通过掌握单片机的编程技巧,我们能够实现各种复杂的功能,如控制LED灯、按键控制、数码管显示等。
这些技能对于日常生活和工程设计都具有很大的实用性。
在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。
单片机原理及应用实验二报告

单片机原理及应用实验二报告实验二:单片机IO口的输入输出实验一、实验目的:1.理解并掌握单片机IO口的输入输出原理;2.掌握基础的输入输出编程技巧;3.熟悉单片机实验的基本流程和实验报告格式。
二、实验器材:1.STM32F103C8T6开发板2.LED灯3.电阻(220Ω)4.面包板、杜邦线等。
三、实验原理:单片机的IO口是实现与外部器件进行通信的重要接口,通过编程,我们可以控制IO口的状态(低电平或高电平)来实现对外部器件的控制或检测。
IO口的输入输出原理主要有两种:1.三态输出方式:通过设置IO口的DDR寄存器来将IO口设置为输出模式(推挽输出),并通过设置IO口的ODR寄存器来控制IO口的输出状态为低电平或高电平;2.上拉输入方式:通过设置IO口的DDR寄存器来将IO口设置为输入模式,同时设置IO口的CR寄存器的PUPD位为上拉使能,通过读取IO口的IDR寄存器可以获取IO口的输入状态。
四、实验步骤:1.连接电路:将STM32F103C8T6开发板的VDD和VSS(即5V和GND)分别连接到面包板的3V3和GND,将LED的阳极(长脚)连接到STM32F103C8T6开发板的PA0引脚,将LED的阴极(短脚)通过一个220Ω的电阻连接到GND。
2. 打开Keil uVision5软件,创建一个新的工程,并选择适合的芯片型号(STM32F103C8T6)。
3.编写代码实现将PA0引脚设置为输出模式,并控制LED的亮灭。
五、实验代码:```c#include "stm32f10x.h"void GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);int main(void)GPIO_Configuration(;while (1)GPIO_SetBits(GPIOA, GPIO_Pin_0); // 点亮LEDGPIO_ResetBits(GPIOA, GPIO_Pin_0); // 关闭LED}```六、实验结果与分析:七、实验心得:本次实验主要学习了单片机IO口的输入输出原理,了解了三态输出方式和上拉输入方式,并通过实际编写代码的方式,在STM32F103C8T6开发板上实现了控制LED的亮灭。
单片机实验二数制转换类程序设计

单片机实验二数制转换类程序设计【实验目的】1.了解数制转换的基本概念及原理。
2.掌握单片机对数制转换的程序设计方法。
【实验器材】1.STC89C52单片机实验箱2. Keil C51开发环境3.电源、连接线等【实验原理】数制转换是将一个数值在不同进制间互相转换的过程。
常见的进制包括二进制、八进制、十进制和十六进制。
在程序设计中,经常需要进行不同进制间的转换,例如从二进制转换为十进制、从十进制转换为十六进制等。
【程序设计】本实验设计一个数制转换类的程序,实现二进制、八进制、十进制和十六进制之间的转换。
基本思路:1.输入数字和当前进制。
2.根据当前进制将输入的数字转换为十进制。
3.根据目标进制将十进制数转换为目标进制并输出。
【程序示例】```#include <reg52.h>#include <stdio.h>//二进制转十进制int binaryToDecimal(char *binary)int length = 0;while (binary[length] != '\0')length++;}int decimal = 0;int base = 1;for (int i = length - 1; i >= 0; i--) if (binary[i] == '1')decimal += base;}base *= 2;}return decimal;//十进制转二进制void decimalToBinary(int decimal, char *binary) int index = 0;while (decimal > 0)binary[index++] = (decimal % 2 == 1) ? '1' : '0'; decimal /= 2;}binary[index] = '\0';//反转二进制字符串int i = 0;int j = index - 1;while (i < j)char temp = binary[i];binary[i] = binary[j];binary[j] = temp;i++;j--;}//十进制转八进制void decimalToOctal(int decimal, char *octal)int index = 0;while (decimal > 0)octal[index++] = (decimal % 8) + '0';decimal /= 8;}octal[index] = '\0';//反转八进制字符串int i = 0;int j = index - 1;while (i < j)char temp = octal[i];octal[i] = octal[j];octal[j] = temp;i++;j--;}//十进制转十六进制void decimalToHexadecimal(int decimal, char *hexadecimal)int index = 0;while (decimal > 0)int remainder = decimal % 16;if (remainder < 10)hexadecimal[index++] = remainder + '0';} elsehexadecimal[index++] = remainder - 10 + 'A'; }decimal /= 16;}hexadecimal[index] = '\0';//反转十六进制字符串int i = 0;int j = index - 1;while (i < j)char temp = hexadecimal[i];hexadecimal[i] = hexadecimal[j]; hexadecimal[j] = temp;i++;j--;}void maichar input[100];int currentBase; // 当前进制int targetBase; // 目标进制printf("请输入一个数字:");scanf("%s", input);printf("请输入当前进制:");scanf("%d", ¤tBase);printf("请输入目标进制:");scanf("%d", &targetBase);printf("转换结果为:");switch (currentBase)case 2://二进制转十进制int decimal = binaryToDecimal(input); //十进制转目标进制switch (targetBase)case 8:char octal[100];decimalToOctal(decimal, octal);printf("%s\n", octal);break;}case 10:printf("%d\n", decimal);break;}case 16:char hexadecimal[100]; decimalToHexadecimal(decimal, hexadecimal); printf("%s\n", hexadecimal);break;}}break;case 8://八进制转十进制decimal = atoi(input);//十进制转目标进制switch (targetBase)case 2:char binary[100];decimalToBinary(decimal, binary);printf("%s\n", binary);break;}case 10:printf("%d\n", decimal);break;}case 16:char hexadecimal[100]; decimalToHexadecimal(decimal, hexadecimal); printf("%s\n", hexadecimal);break;}}break;case 10://十进制转目标进制switch (targetBase)case 2:char binary[100];decimalToBinary(atoi(input), binary); printf("%s\n", binary);break;}case 8:char octal[100];decimalToOctal(atoi(input), octal); printf("%s\n", octal);break;}case 16:char hexadecimal[100];decimalToHexadecimal(atoi(input), hexadecimal); printf("%s\n", hexadecimal);break;}}break;case 16://十六进制转十进制decimal = atoi(input);//十进制转目标进制switch (targetBase)case 2:char binary[100];decimalToBinary(decimal, binary);printf("%s\n", binary);break;}case 8:char octal[100];decimalToOctal(decimal, octal);printf("%s\n", octal);break;}case 10:printf("%d\n", decimal);break;}}break;}```【实验结果】1.运行程序后,程序会提示输入一个数字、当前进制和目标进制。
单片机原理及应用实验报告2

单片机原理及应用实验报告2单片机原理及应用实验报告2实验报告:单片机原理及应用实验一、实验目的1、了解单片机的基本工作原理;2、掌握单片机的编程方法和编写汇编语言程序的能力;3、学习单片机的应用实验。
二、实验原理单片机是一种集成电路,内部包含了中央处理器、存储器和各种输入输出端口。
单片机的工作原理是通过对输入信号的处理和对输出信号的控制来实现各种功能。
单片机的编程方法一般采用汇编语言编写程序。
汇编语言是一种低级语言,可以直接对单片机进行操作。
通过编写汇编语言程序,可以实现各种功能,如控制LED灯的亮灭、控制电机的转动等。
本次实验主要通过控制LED灯的亮灭来演示单片机的应用。
在实验中,我们将使用汇编语言编写程序,通过编程来控制LED灯的亮灭。
三、实验步骤2、编写汇编语言程序:打开编程软件,进入编程界面,编写程序代码;3、编译程序:将编写好的程序进行编译,生成机器码;4、烧录程序:用编程工具将编译好的机器码烧录到单片机中;5、连接电路:使用面包板将单片机与LED灯连接起来;6、测试程序:将单片机的电源接通,观察LED灯的亮灭情况。
四、实验结果与分析经过以上步骤,我们成功地编写了汇编语言程序,并将程序烧录到了单片机中。
在实验中,我们观察到LED灯根据程序的控制产生了相应的亮灭效果。
实验结果表明,通过编程可以实现对单片机的控制,从而实现各种功能。
单片机在嵌入式系统、自动控制系统、家电等方面有着广泛的应用。
五、应用实例1、家居智能化控制:通过编程控制单片机,可以实现对家电的智能化控制。
例如,可以根据日出日落时间控制窗帘的开闭,根据室内温度控制空调的开关等。
2、工业自动化:在工业生产中,单片机可以用来控制各种设备和机械,实现生产线的自动化控制。
例如,可以根据产品的规格和数量,自动调整机械的工作速度和工作时间。
3、智能交通系统:在交通领域,单片机可以用来控制信号灯、道闸等设备,实现交通流量的控制。
例如,可以根据道路的拥堵程度和车辆的行驶速度,调整信号灯的红绿灯时间,从而达到交通畅通的目的。
单片机课程实验二: 独立按键电路设计

单片机课程实验二:独立按键电路设计专业:通信工程学号:1610111183 姓名:石万里一、实验步骤:在实验一STC89C52单片机控制8个流水灯的实验的基础上进行此实验。
本次实验目标:通过两个独立按键控制流水灯的变化,使得8个流水灯代表的8进制数,在按下K1键后自动加一,按下K2键后,自动减一,采用下降沿外部中断触发。
电路图在实验一的基础上进行改装,让P32与P33各自通过一个独立按键接地,手绘电路图如图1.1所示:图1.1独立按键电路图1.2独立按键电路焊接成果实验程序编写烧录后,在keil软件中生产hex文件,再烧录到单片机芯片中,再给电路板上电即可。
之后是实验程序的编写,流水灯程序编写好并在学习板上测试成功后,即可把芯片放到自己焊接的电路板上上电测试电路板,如果成功即可找老师验收,不成功需要用万用表对电路板进行测试,测试时先把万用表档位调到欧姆档,测试本实验焊接的独立按键电路是否存在开路,并检查是否存在有未焊接的部分,是否有虚焊漏焊的情况,是否上电测试时晶振未安装,电路板检查后继续进行测试,然后再检查、测试,直到自己焊接的电路板功能正常。
若是在学习板上程序未成功,则需要对程序进行修改,重新编译、烧录,不断测试。
二、流水灯程序:org 0000Hljmp mainorg 0003hljmp jiayiorg 0013hljmp jianyiorg 100h main:setb ex0setb IT0setb ex1setb IT1setb eamov r4,#07hmov r3,#07hmov r2,#02hmov a,#0fehmov p1,aloop2:acall delay next: rl aacall delaymov p1,adjnz r4,next here: acall delay//mov a,p1rr amov p1,adjnz r3,heremov r4,#07hmov r3,#07hdjnz r2,loop2acall delay loop1:mov a,#07chmov p1,asjmp loop1 delay:mov r5,#19h delay1:mov r6,#19h delay2:mov r7,#0ffhdjnz r7,$djnz r6,delay2djnz r5,delay1 retjiayi:mov a,p1dec aacall delaymov p1,asjmp jiayiretijianyi:mov a,p1inc aacall delaymov p1,asjmp jianyiretiend三、实验总结:实验结果如下图所示:前五张图片是加一结果,最后两张图片是减一结果因为拍照速度太慢,故加一减一在图中看起来可能不连续,但程序完全正确,已经过实验验证,本人建议最好录视频作为作业上交此实验是建立在实验一的基础上进行的,故相对较为简单,只需要P32与P33各自加独立按键接地即可。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实验报告(二)
姓名:赵苑珺
学号:090250129
实验三程序设计(二)
一、实验目的
1、了解汇编语言程序设计与调试的过程;
2、掌握循环程序、查表程序和子程序的特点及设计。
二、实验内容
1、循环程序的设计、输入、调试和运行;
2、查表程序的设计、输入、调试和运行;
3、子程序的设计、输入、调试和运行。
三、实验步骤
1、排序程序:将N 个数从小到大排列起来。
设R0 的内容为数据区的首地址,R7 的内容为数据的字节数。
参考程序为:MOV R0,#30H ;将序列首地址存入R0中
MOV R7,#10 ;将序列长度存入R7中
SS: MOV A,R7
MOV R2,A
MOV 60H,R0 ;将序列首地址存入60H
NN: DEC R2 ;循环程序,控制排序次数
MOV A,R2
MOV R3,A
MOV R0,60H
L1: MOV A,@R0 ;将序列第一个数存入A中
INC R0 ;R0加1,指向第二个位置
CLR C ;清除进位标志位C,为比较两数大小做准备
SUBB A,@R0 ;第一个数减去第二个数
JC MM ;判断C的状态,1(代表数1小于数2)跳至MM,0(代表数
1大于数2)继续执行
MOV A,@R0 ;将第二个数存入累加器A中
DEC R0 ;R0指向第一个位置
XCH A,@R0 ;将A中的数(数1)与R0指向的数(数2)交换
INC R0 ;R0减一,指向位置一
MOV @R0,A ;将A中的数2存到位置一内
SETB F0 ;置位用户标志位,表示有交换
MM: DJNZ R3,L1 ;R3减一不为零则跳至L1,否则继续执行程序
MOV A,R2
CJNE R2,#01H,L2 ;判断R2中的数是否已经减为1,是跳至JJ,否跳至L2
SJMP JJ
L2: JB F0,NN ;判断F0状态,若为1(有交换)则跳至NN,否则继续进行JJ: MOV R0,60H ;将序列首地址存入R0
END
向30H~39H单元中输入数据,运行程序,观察30H~39H 单元中的内容,分析结果是否正确。
2、查表程序
设计一程序,将16 进制数转换为对应的ASCII 码。
设16 进制数放在R6 中,转换结果
放在R7 中。
参考程序如下:
ORG 0000H
MOV A,R6 ;将要转换的16进制数存入A中
ANL A,#0FH ;将A的低位提取出来
MOV DPTR,#0030H ;将DPTR指向转换表的首地址
MOVC A,@A+DPTR ;进行查表,采用基址加变址寻址方法
MOV R7,A ;将转换结果放在R7中
ORG 0030H
TAB: DB ‘012345678’;建立转换表
DB ‘9ABCDEF’
END
输入设计好的程序检查无误后,汇编。
向R6 中输入多个不同的ACSII 码,运行程序,
观察R7 中的内容,分析运行结果是否正确。
3、双字节原码加减法程序
功能:(R2R3)±(R6R7)→(R4R5)
加减和求补过程采用子程序。
参考程序如下:
ORG 0000H
DSUB: MOV A,R6
CPL ACC.7
MOV R6,A
DADD:MOV A,R2
MOV C,ACC.7
MOV F0,C
XRL A,R6
MOV C,ACC.7
MOV A,R2
CLR ACC.7
MOV R2,A
MOV A,R6
CLR ACC.7
MOV R6,A
JC DAB2
ACALL NADD
MOV A,R4
JB ACC.7,C
DAB1:MOV C,F0
MOV ACC.7,C
MOV R4,A
AJMP HERE
DABE:SETB C
AJMP HERE
DAB2:ACALL NSUB1
MOV A,R4
JNB ACC.7,DAB1
ACALL CMPT
CPL F0
SJMP DAB1
HERE:SJMP HERE
ORG 0030H
NADD:MOV A,R3
ADD A,R7
MOV R5,A
MOV A,R2
ADDC A,R6
MOV R4,A
RET
NSUB:MOV A,R3
CLR C
SUBB A,R7
MOV R5,A
MOV A,R2
SUBB A,R6
MOV R4,A
RET
CMPT:MOV A,R5
CPL A
ADD A,#1
MOV R5,A
MOV A,R4
CPL A
ADD A,#00H
MOV R4,A
RET
END
输入设计好的程序检查无误后,汇编。
向R2R3 和R6R7 中输入多个不同的数据,运行
程序,单步运行程序时,观察程序的运行过程。
程序运行结束后,观察R4R5 中的内容,分
析运行结果是否正确。
四、实验设备及仪器
1、单片机实验装置及开发系统一套;
2、PC 机一台。
五、思考题
1、伟福集成开发环境提供了那些运行命令,它们之间的区别是什么?
2、怎样设置和清除断点?
答:将光标移到源程序窗口的左边“Gutter”区域,单击左键设置断点,也可以用F6键将
光标所在行设置为断点。
3、子程序执行过程怎样?在程序设计中采用子程序有什么优点?
答:用子程序调用指令时,先将PC加2的内容入栈,然后将子程序第一条指令的地址给PC,转向子程序开始执行,子程序结束返回时利用RET指令,此时从堆栈中退出PC的高八位和低八位给PC,主程序继续执行。
采用子程序能使整个程序的结构简单,缩短程序的设计时间,减少占用的程序存储空间。
实验四单片机中断实验
一、实验目的
1、了解单片机的中断过程。
2、了解单片机中断的触发方式。
3、了解单片机中断的程序设计。
4、学习中断服务程序的调试方法。
二、实验内容
1、单片机外部中断的低电平触发方式
如图3.4.1,按住开关K,在INT0 端产生一个低电平信号,触发外部中断,将事先送入
寄存器R1 中的值由LED 即发光二极管电路显示出来。
2、单片机外部中断的下降沿触发方式
如图3.4.1,按一下开关K,在INT0 端产生一个下降沿信号,触发外部中断,将事先送
入寄存器R1 中的值由LED 即发光二极管电路显示出来。
注意:开关Kx 可用查询式键盘中的任意一键代替。
三、实验步骤
1、外部中断的低电平触发方式
(i)按图4-3 给出的原理图连好电路,其中Kx 可为‘开关量输入如模块’中的任意一个开
关,用双头线与INT0 引脚(位于单片机扩展资源区(D1 区))连接。
(i)根据实验内容1 要求,设计外部中断的低电平触发方式的主程序和中断服务子程序。
参考程序如下:
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP ITAP
ORG 0030H
MAIN:MOV TCON,#00H ;设置TCON控制寄存器(低电平触发方式)SETB EX0 ;开启外部中断0
SETB EA ;开启总中断
HERE:AJMP HERE ;当无中断发生时,程序在此原地踏步
ORG 0040H ;中断程序
ITAP:MOV A,R1
MOV P1,A ;通过设置R1的值可以控制中断发生时P1口
的状态,进而控制灯的亮灭
RETI
END
(ii)打开计算机和实验装置,进入菊阳单片机集成开发环境,输入、汇编、运行程序。
(iii)R1 置不同的值,将开关Kx 置0 位置,再置回1 位置(相当于按下开关),观察实验
现象。
2、外部中断的下降沿触发方式
(i)根据实验内容2 的要求,设计外部中断的下降沿触发方式的主程序和中断服务子程序。
参考程序如下:
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP ITAP
ORG 0030H
MAIN:MOV TCON,#01H ;设置TCON控制寄存器(下降沿触发方式)MOV IE,#81H ;开启总中断,开启外部中断0
MOV R1,#21H
HERE:AJMP HERE ;原地踏步
ORG 0100H ;中断程序
ITAP:MOV A,R1
SWAP A
MOV P1,A ;中断程序的功能为交换P1高四位低四位
RETI 效果为高四位灯与低四位灯交换闪烁一次
END
(ii)打开计算机和实验装置,进入菊阳单片机集成开发环境,输入、汇编、运行程序,分
析现象。
(iii)R1 置不同的值,按下开关,观察实验现象与自己分析结果是否相符。
四、实验设备及仪器
1、单片机实验装置及开发系统一套;
2、PC 机一台。
五、思考题
1、有关中断的特殊功能寄存器有那些?答:TCON,SCON,IE,IP
2、单片机外部中断的低电平触发方式存在什么问题?怎样解决?
答:响应中断后中断请求标志的撤销是自动的,但是低电平仍然存在,在以后的采样时又有可能重新响应中断。
解决方法为在中断引脚外加一由D锁存器构成的电平方式外部中断请求的撤销电路。