实验一清零程序

合集下载

微机原理实验报告清零程序

微机原理实验报告清零程序

竭诚为您提供优质文档/双击可除微机原理实验报告清零程序篇一:微机原理实验报告微机原理与应用课程实验报告实验分工:报告人同组人实验时间:20XX.12.10课程设计一、题目要求(1)在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据;(2)将上述源区内容传送到目的内存区2(首址为1100h)中;(3)检验上述传送过程是否正确,如有错误,在紧跟内存区2后的第一个字节开始写入AscII码“eRRoR”,否则写入“oK”。

(4)用冒泡法将上述内存区2的数据,按从小到大的次序重新排列,排列后存放在内存区3(开始地址为2100h)。

(5)将上述内存区2和内存区3的第100个数据分别乘以2,并转为bcD码,保存在各自存储区的末尾。

再将上述两个bcD码相乘,其结果保存在内存区1的末尾处。

二、实验程序框图三、程序代码codesegmentassumecs:codeDATA1db16dup(?)DATA2dbeRRoRDATA3dboK;在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据start:movax,0100h;规定目标程序存放单元的偏移量movds,ax;数据段地址moves,axmovsi,offsetDATA1;偏移地址movcx,0010h;循环次数movbx,0100hmoval,ofhs1:movcs:[si],almov[bx],cs:[si]incsiincbxdecalloops1nop;将内存区1数据搬移到内存区2中movcx,16movsi,0100hmovbx,1100hs2:moval,[si]mov[bx],alincbxloops2nop;对比内存区1的数据与内存区2的数据是否相同mov cx,16movsi,0100hmovbx,1100hcomp:movax,[si]movdx,[bx]cmpax,dxjneerroincsiincbxloopcomp;数据如果都相同,说明上述传输过程正确movsi,offsetDATA3movdi,1110hmovbl,0movcx,2enteroK:movbl,cs:[si]mov[di],blincsiincdiloopenteroKnopjmps3;如果有一个数据不相同,说明上述传输过程不正确err:movsi,offsetDATA2movdi,1110hmovbl,0movcx,5entereRR:movbl,cs:[si]mov[di],blincdiloopentereRR;将内存区2数据搬移到内存区3中s3:movsi,1100hmovcx,0010hmovbx,2100hmoval,0movcx,16fil:moval,[si]mov[bx],alincsiincbxloopfilnop;用冒泡法将内存区3的数据按从小到大重新排列s4: movbl,0movcx,16movsi,2110hdecsideccxagain:moval,[si]cmpal,[si-1]jaenextxchgal,[si-1]mov[si],almovbl,1next:decsiloopagaincmpbl,0jnestart1nopmovsi,1109hmoval,[si]movcl,2mulcl;结果在al中movdx,0movbx,10divbxshlal,4addal,dl;把二进制数转换成bcD码mov[1112h],almovsi,2109hmoval,[si]movcl,2mulcl;结果在al中movdx,0movbx,10divbxshlal,4addal,dl;把二进制数转换成bcD码mov[2110h],al;两个bcD码相乘,其结果保存在内存区1的末尾处。

单片机实验报告

单片机实验报告

单片机实验报告实验一:存储器块清零或赋值一、实验目的1 熟悉存储器的读写方法,熟悉51汇编语言结构。

2 熟悉循环结构程序的编写。

3 熟悉编程环境和程序的调试。

二、实验内容指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。

例如将4000H开始的10个字节内容清零或全部赋值为33H。

注意:1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。

2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。

5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。

三、实验仪器微机、VW,WA VE6000编程环境软件,(单片机实验箱)Lab6000/Lab6000通用微控制器MCS51实验四、实验步骤1、新建工程文件。

(注意:文件不要用中文名称保存时不要用中文路径)2、编写程序。

3、运行和调试过程。

外部数据存储器(4000H为首地址的10个字节)中初始状态(随便赋值FFH):单步执行程序,观察SFR中外部地址指针的变化;全速执行程序,可以看到外部数据存储器已赋值33H:五、实验结果可以看到外部数据存储器已赋值33H:六、问题讨论本次实验能够清楚地了解存储器中数据的移动和赋值过程,通过单步执行,对于每一步的指令操作过程能够了解如何执行,查看每条语句涉及到的寄存器和存储器内容的变化结果。

同时,学习掌握汇编程序的编写和调试过程。

实验二:存储块移动一、实验目的1 熟悉51汇编语言程序结构。

2 熟悉循环结构程序的编写,进一步熟悉指令系统。

3 熟悉编程环境和程序的调试。

二、实验内容将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。

实验1存储器块清零

实验1存储器块清零

实验一存储器块清零软件操作过程:新建文件→保存文件(汇编语言后缀.ASM、C语言后缀.C)→新建项目(出现3个对话框)→对话框1:加入模块文件(选择要加的文件)→对话框2:加入包含文件(头文件之类的,没有可以点取消)→对话框3:保存项目(输入项目名称,注意项目和加入的文件必须在同一个文件夹中)→打开相应的模块文件,输入程序→点击绿色“开始”按钮,运行检查错误修改,直到没有错误为止。

窗口:CPU窗口——特殊功能寄存器窗口、工作寄存器窗口数据窗口——DATA片内数据存储器XDAT片外数据存储器CODE程序存储器BIT 位存储区仿真器设置:点仿真器→仿真器设置→选择仿真(Lab2000p仿真)→选择仿真头(MCS51实验)→选择CPU(8031/8032)→选择是否使用软件模拟器→点击好请编写程序,将片内RAM 30H-4FH单元中的内容清零。

MOV R0,#30HMOV R1,#32L0:MOV @R0,#00HINC R0DJNZ R1,L0SJMP $请编写程序,将片内RAM 60H-7FH单元中的内容置为FEH。

MOV R0,#60HMOV R1,#32L0:MOV @R0,#0FEHINC R0DJNZ R1,L0SJMP $1、片外ram50h—7fh内容置为:fehMOV DPTR,#50HMOV R1,#48MOV A,#0feHL0:MOVX @DPTR,AINC DPTRDJNZ R1,L0SJMP $2、片内RAM 20H-4FH中内容置为(20h)=00h,(21h)=01h,(22h)=02h, ,(4fh)=2fh MOV A,#00HMOV R1,#20HMOV R0,#48MOV @R1,ALOOP: INC AINC R1MOV @R1,ADJNZ R0,LOOPEND。

清零程序

清零程序

实验一清零程序一、实验目的掌握汇编语言设计和调试方法,熟悉键盘操作。

二、实验时间地点时间:2014年4月15日地点:8B204三、实验内容把2000H~20FFH单元的内容清零。

四、实验程序框图五、实验程序(1)基本程序ORG 0000HLJMP SE01ORG 0640HSE01: MOV R0,#00HMOV DPTR,#2000HLOO1: CLR AMOVX @DPTR,AINC DPTRINC R0CJNE R0,#00H,LOO1LOOP:SJMP LOOPEND(2)带注释的基本程序(为方便程序阅读仅对注释部分做了详细的注释而已)ORG 0000HLJMP SE01ORG 0640HSE01: MOV R0,#00H ;(00H)送R0,R0 为计数器MOV DPTR,#2000H ;(2000H)送DPTRLOO1: CLR A ;累加器A 清零MOVX @DPTR,A ;存储空间内容清零INC DPTR ;DPTR 加1INC R0 ;R0 加1CJNE R0,#00H,LOO1 ;若R0 不等于00,则跳转至LOO1 继续循环LOOP: SJMP LOOPEND六、实验步骤使用DICE-51单片机仿真系统,用连续或单步方式运行实验程序,检查执行程序前后2000~20FF单元中的内容变化。

首先打开DICE-51单片机仿真系统软件,新建一个文件名尾缀为.asm的文件,将程序输入到文件当中,打开程序存储器和数据存储器,任意改变存储单元中的内容,经编译,连接,装载后,先采用单步方式运行实验程序,由数据存储器中可以看到2000~20FF单元的内容逐渐清零,程序运行结束2000~20FF单元的内容都为0;再采用连续方式运行实验程序,实验结果为2000~20FF单元的内容都为0。

七、思考假使把1000H~10FFH 中的内容改成FF,如何修改程序,请分别用连续和单步方式运行程序来完成验证。

单片机原理与应用实验教案

单片机原理与应用实验教案

《单片机原理及应用》实验教学大纲课程编号:B04611016课程类别:专业课实验学时:16学时学分:2.5适用专业:计算机科学与技术一、实验教学目的和任务本课程是计算机及应用专业一门重要的专业课。

其教学内容直接面向生产。

同时,微机向小型化、超小型化方面发展愈来愈迅猛。

单片机应用已渗透社会各个领域,特别在通信技术中的应用,大大提高了通信技术水平。

学生应具备这方面的知识与技能,为今后参加工作,打下坚实的基础。

二、实验教学基本要求本课程是一门很注重实践的课程。

以研究MCS-51系列单片机入手,掌握其硬件结构、指令系统和程序设计,以及常用接口技术和典型应用实例。

三、实验教学内容实验项目一:清零程序1、实验目的及要求要求学生掌握软件的结构和键盘的调试。

2、实验内容及学时分配(2学时)(1)了解MCS-51软件的构造(2)掌握清零程序的输入方法(3)了解起始伪指令的输入方法实验项目二:拼字和拆字程序1、实验目的及要求要求学生掌握存储器分配和汇编语言的简单应用。

2、实验内容及学时分配(2学时)(1)进一步掌握MCS-51软件的基本使用方法(2)掌握指令的寻址方式(3)掌握数据传送指令和地址内容的分配实验项目三:数据区传送子程序1、实验目的及要求要求学生掌握RAM数据存储器实际操作。

2、实验内容及学时分配(2学时)(1)掌握MCS-51逻辑运算指令和位操作指令(2)进一步掌握数据传送子程序的简单方法(3)掌握查表程序的编写实验项目四:数据排序实验1、实验目的及要求要求学生掌握汇编语言的应用和实际操作。

2、实验内容及学时分配(2学时)(1)掌握MCS51逻辑运算指令和位操作指令(2)进一步掌握简单顺序程序的编写和调试方法(3)掌握查表程序的编写实验项目五:查找相同个数1、实验目的及要求熟悉汇编语言程序,使用环移指令和加1指令。

2、实验内容及学时分配(2学时)(1)掌握赋值指令(2)掌握带进位的环移指令和加1程序的编写实验项目六:双字节无符号数的乘法实验1、实验目的及要求要求学生掌握MCS-51汇编语言设计和调试方法。

清零程序实验报告

清零程序实验报告

清零程序实验报告清零程序实验报告一、引言在计算机科学领域中,清零程序是一种常见且重要的操作。

它的作用是将某个变量或内存空间的值归零,以便重新使用或准备下一次计算。

清零程序的设计和实现对于提高计算机性能和保证数据的准确性具有重要意义。

本实验旨在探索清零程序的设计思路和实现方法,并通过实际编写代码来验证其功能和效果。

二、实验目的1. 理解清零程序的概念和作用;2. 掌握清零程序的设计原则和实现技巧;3. 通过实验验证清零程序的正确性和效率。

三、实验方法本实验采用C语言作为编程语言,使用Visual Studio Code作为开发工具。

实验步骤如下:1. 定义一个变量或内存空间,并初始化其值;2. 设计清零程序的算法和逻辑;3. 编写代码实现清零程序;4. 运行程序并验证清零结果;5. 分析程序的效率和优化空间。

四、实验过程1. 定义变量并初始化在本实验中,我们选择一个整型变量x作为示例。

首先,我们给x赋一个初始值,例如x=100。

2. 设计清零程序的算法和逻辑清零程序的算法和逻辑可以有多种实现方式。

在本实验中,我们选择一种简单而高效的方法来实现清零功能。

具体算法如下:将变量x的值赋为0。

3. 编写代码实现清零程序根据上述算法,我们可以使用C语言编写清零程序的代码。

代码示例如下:```c#include <stdio.h>int main() {int x = 100; // 初始化变量x的值为100x = 0; // 清零操作printf("清零后的值为:%d\n", x);return 0;}```4. 运行程序并验证清零结果将上述代码保存为一个C文件,使用编译器进行编译和运行。

在运行程序后,我们可以看到输出结果为"清零后的值为:0",证明清零程序的功能正常。

五、实验结果与分析通过本实验,我们成功设计并实现了一个简单的清零程序。

在实验中,我们选择了一种简单而高效的清零算法,即直接将变量的值赋为0。

清零程序实验

清零程序实验

实验一:清零程序实验:一、实验目的:1、掌握单片机的内部存储器在逻辑上的结构。

2、掌握如何对单片机内部,外部存储器RAM中所存的内容进行清零及编程方法。

二、实验内容:将外部存储器RAM 2000H~20FFH中的内容清零。

三、实验程序框图:四、实验步骤:⑴.运行仿真调试环境,打开文件编辑窗口:⑵.进行编辑源文件。

⑶.保存你所编辑的源文件,并进行编译。

即点击图标,如果你是新文件,屏幕会提示以下信息点击“YES”屏幕显示以下信息这时,你应该输入你相要保存文件的文件名。

注意:文件名的长度不能超过8个字符;同时也不能用中文名字存文件名,否则编译器会照不到连接文件而发生编译错误(这是只要因为该编译系统调用国外编译软件进行编译的的原因)。

如果文件编写正确则提示如下信息:表明编译没有警告和错误;连接没有警告和错误。

上述步骤完成后,屏幕会自动弹出调试窗口。

其中:* 表示当前PC指针所在的位置。

上图中图标,表示断点所在的位置,上图中设置了两个断点;即当程序运行到断点处就停下来,并将当前运行的结果,在寄存器或数据窗口中显示出来。

⑷.查看寄存器窗口信息,可以按下图打开寄存器窗口。

点击寄存器栏便可观察寄存器窗口的内容,按照同样的方法可打开其他窗口的信息,如数据窗口等。

按图标会对所打开的窗口进行重新排列。

垂直、水平、或卡片式排列。

⑸.调试与运行,用连续或单步不同方式运行程序,在运行图标时,即进入全速运行状态,遇到断点时便停下来,并刷新当前所运行的结果,在所对应的窗口上显示出来。

运行图标,便进入单步运行状态,该图标表示在遇到CALL指令时会进入到CALL调用的子程序内部;该图标表示在遇到CALL指令时,把所调用的CALL子程序作为一条执行语句执行;学会上述的操作方法后便可进入你所相要做的工作了。

这时你也会查看或检查2000~20FFH中执行程序前后的内容变化。

五、思考:假使把2000H~20FFH中的内容改成FF,如何修改程序。

微机原理与接口技术-清零程序实验报告

微机原理与接口技术-清零程序实验报告

《微机原理与接口技术》课程实验报告
一、实验目的和要求
实验目的:掌握汇编语言设计和调试方式;
实验要求:通过本实验,掌握8051汇编程序设计以及仿真实验的流程及方法。

二、实验环境
DVCC单片机仿真实验系统独立工作以及连PC机。

三、实验内容及实施
【实验内容】把50H~5FH单元的内容清零。

【源程序】
【实验步骤】
DVCC仿真实验系统连PC机时
(1)连接好相应的实验线路;
(2)在闪动“P.”状态,按PCDBG键;
(3)在PC机处于在Win95/98软件平台下,单击DVCC图标;
(4)在系统设置选项中设定仿真模式应设定为内程序、外数据;
(5)根据屏幕提示进入51/96动态调试菜单;
(6)连接DVCC实验系统;
(7)装载目标文件;
(8)设置PC起始地址;
(9)从起始地址开始连续运行程序;
(10)调出外部数据窗口,检查50H~5FH单元的内容是否全部被清零。

四、实验结果
五、实验讨论
通过8051汇编程序的设计、编译及运行,调出外部数据窗口,我们可以观察到从50H~5FH单元的内容已经被全部清零。

刚开始我们并没有做到全部单元清零,后来通过不断地调试错误和运行,实现了实验目的。

通过本次实验,掌握了汇编语言的设计,实现了清零操作,并且熟悉了仿真实验系统的键盘操作以及基本仿真软件的使用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一清零程序-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN实验一清零程序一、实验目的: 掌握汇编语言设计和调试方法,熟悉键盘操作。

二、实验内容:把2000H~20FFH 的内容清零。

三、实验程序框图四、实验步骤: 用连续或单步方式运行程序,检查2000~20FF 中执行程序前后的内容变化。

五、思考:假使把1000H~10FFH 中的内容改成FF,如何修改程序,请分别用连续和单步方式运行程序来完成校验证六、程序清单(1)基本程序(文件名)ORG 0000HLJMP SE01ORG 0640HSE01: MOV R0,#00H ;(00H)送R0,R0 为计数器MOV DPTR,#2000H ;(2000H)送DPTRLOO1: CLR A ;累加器A 清零MOVX @DPTR,A ;存储空间内容清零INC DPTR ;DPTR 加1INC R0 ;R0 加1CJNE R0,#FFH,LOO1 ;若R0 不等于00,则跳转至LOO1 继续循环LOOP: SJMP LOOPEND七、思考:假使把1000H~10FFH 中的内容改成FF程序如下:ORG 0000HLJMP SE01ORG 0640HSE01: MOV R0,#00H ;(00H)送R0,R0 为计数器MOV DPTR,#1000H ;(2000H)送DPTRLOO1: MOV A,#FF;累加器A 置FFMOVX @DPTR,A ;存储空间内容置FFINC DPTR ;DPTR 加1INC R0 ;R0 加1CJNE R0,#FFH,LOO1 ;若R0 不等于00,则跳转至LOO1 继续循环LOOP: SJMP LOOPEND现象:运行第一条程序可以发现1000H~10FFH 中的内容变成FF,运行第二条程序1000H~10FFH 中的内容改成00.而其它单元的内容不变。

心得:该实验的内容比较简单。

实验二口输入,P1 口输出一、实验目的:掌握P3 口、P1 口简单使用。

二、实验内容:口输入一脉冲,P1 口按16 进制加一方式点亮发光二极管。

三、实验步骤用导线连至K1 开关,~导线连至L1~L8,K1 拨动一次,L1~L8 发光二极管按16 进制方式加一点亮。

快捷连线说明:→K1~→L1~L8(发光二极管)四、思考:修改程序,使发光二极管左移方式点亮。

五、程序清单(1)基本程序(文件名 HW01·ASM)ORG 0000HLJMP J100ORG 0810HJ100: MOV A,#00HJ101: JB ,J101MOV R2,#10HLCALL DELYJB ,J101J102: JNB ,J102MOV R2,#10HLCALL DELYJNB ,J102INC APUSH ACCCPL AMOV P1,APOP ACCAJMP J101DELY: PUSH 02HDEL2: PUSH 02HDEL3: PUSH 02HDEL4: DJNZ R2,DEL4POP 02HDJNZ R2,DEL3POP 02HDJNZ R2,DEL2POP 02HDJNZ R2,DELYRETEND九,改变延时常数,使发光二极管闪亮时间改变。

修改程序,使发光二极管闪亮移位方向改变的程序:ORG 0000HLJMP J100ORG 0810HJ100: MOV A,#09HJ101: JB ,J101MOV R2,#10HLCALL DELYJB ,J101J102: JNB ,J102MOV R2,#10HLCALL DELYJNB ,J102DEC APUSH ACCCPL AMOV P1,APOP ACCAJMP J101DELY: PUSH 02HDEL2: PUSH 02HDEL3: PUSH 02HDEL4: DJNZ R2,DEL4POP 02HDJNZ R2,DEL3POP 02HDJNZ R2,DEL2POP 02HDJNZ R2,DELYRETEND实验现象:当执行第一个程序时K1 开关向下拨动一次时A中的内容从0依次加1,P1口的发光二极管也依次发光并向右移。

当执行第二个程序时K1 开关向下拨动一次时A中的内容从8依次减1,P1口的发光二极管也依次发光并向左移。

心得:该实验运用了累加器A并不断加1.还有该程序连续两次判断口是否为高电平在执行下一条语句和连续两次判断口是否为低电平在执行下一条语句的原因是为了消除开关的抖动。

实验三中断基础实验一、实验目的: 掌握MCS-51 单片机中断原理以及编程使用方法;理解下降沿中断和低电平中断的区别。

二、实验预备知识MCS-51 单片机有2 个由/INT0、/INT1 引脚输入的外部中断源。

触发外部中断有两种方式,即下降沿引起中断或低电平引起中断。

当编程TCON 中的ITi(i=1 或0,下同)为1 时,则引起触发的方式为边沿触发方式,反之为低电平触发方式。

每个中断源的中断请求能否得到响应要受两级“开关”的控制,即一个总“开关”EA 和EXi 的控制,只有当EA 为1,且对应的分“开关” EXi 也为1 时,相应中断源的中断请求才能被响应。

外部中断0、外部中断1 对应有2 个固定的中断服务程序入口地址0003H、0013H。

响应中断后中断申请标志IEi 由硬件自动清零三、实验内容编写主程序,读取K1 状态,当其与地端闭合时(为低电平)初始化为低电平触发,反之,初始化为下降沿触发,且发光二极管灭;编写中断服务程序,使图中的发光管闪烁5 次,间隔250ms,即中断服务程序的执行时间为秒,退出中断程序时,使发光管灭。

六、实验步骤把“总线插孔”框中的、、分别连L1、 K1、“单脉冲与时钟”的“”孔。

快捷连线说明:→L1,→K1,→七、思考:1.要LED 亮5 次,程序应如何改动2.若改为外部中断1 来实现以上实验,如何修改实验的硬件和软件3.电平触发在输入信号后,灯闪的次数受谁的控制八、程序清单(1)基本程序(文件名 int011ok·ASM)ORG 0000HlJMP MAINORG 0003H ;外中断0 入口地址LJMP INTER0ORG 0660HMAIN: JB ,MAIN1 ;判断是电平触发还是沿触发clr it0 ;=0 低电平触发lJMP MAIN2MAIN1: SETB it0 ;中断初始化,=1 下降沿边缘触发MAIN2: ORL IE,#81HORL IP,#02HlJMP MAININTER0: CLR EA ;中断处理程序SETBLCALL DELYCLRLCALL DELYSETBLCALL DELYCLRLCALL DELYSETBLCALL DELYCLRLCALL DELYSETB EARETIDELY: MOV R6,#200H ;延时DELY1: MOV R7,#125HDELY2: DJNZ R7,DELY2DJNZ R6,DELY1RETEND实验现象:外部T0如果有中断的话,LED灯闪烁三次,中间间隔250ms否则程序一直在等待中断源。

若改为外部中断1 来实现以上实验,如何修改实验的硬件和软件如果改为外部中断1 来实现以上实验,硬件方面单脉冲时钟接,即外部中断1入口,而在软件方面,把IE和IP设置为 ORL IE,#84HORL IP,#04H即可。

电平触发在输入信号后,灯闪的次数受谁的控制灯闪烁的次数受子程序中高电平的次数的控制。

心得:了解中断和定时计数器的使用。

还有老师给我们的那个程序有错误。

应把DELY: MOV R6,#00H ;延时DELY1: MOV R7,#00H改为DELY: MOV R6,#200H ;延时DELY1: MOV R7,#125H实验四定时/计数器基础实验一、实验目的: 掌握MCS-51 单片机内部定时/计数器的程序设计与调试方法。

二、实验预备知识MCS-51 单片机有两个16 位的定时计数器T0 和T1,它们都有定时和对外部事件进行计数的功能,可用于定时控制、对外部事件检测和计数等场合。

计数和定时实质上都是对脉冲信号进行计数,只不过脉冲源不同而已。

当工作在定时方式时,计数脉冲来自单片机的内部,即振荡器信号12分频后作计数脉冲,每个机器周期的时间使计数器加1,由于计数脉冲的频率是固定的(即每个脉冲为1 个机器周期的时间),故可通过设定计数值来实现定时功能;当工作在计数方式时,计数脉冲来自单片机的引脚,每当引脚上出现一个脉冲时,计数器加1,从而实现计数功能。

可以通过编程来指定定时/计数器的功能,以及它的工作方式。

中断申请标志TF,在中断响应后有硬件中断清零,查询方式时必须由软件清零。

三、实验内容利用定时器1,通过对外部脉冲的计数,利用查询方式,实现在引脚上产生输出信号。

四、实验步骤把、分别连K1、L1。

快捷连线说明:→K1→L1五、思考:1.开关来回拨4 次才取反,程序应如何修改2.采用中断方式,该如何设计程序八、程序清单基本程序(文件名)ORG 0000HLJMP DSJUORG 0660HDSJU: MOV TMOD,#60H ;T1 计数,工作方式2MOV TH1,#0FEH ;赋初值MOV TL1,#0FEHSETB TR1 ;启动DEL: JBC TF1 ,REP ;查询计数溢出AJMP DELREP: CPL ;取反AJMP DELEND实验现象:每按一次开关,L1灯变化一次。

思考修改:1.开关来回拨4 次才取反,程序应如何修改答:把初值设置为FB即可,即为把MOV TH1,#0FEHMOV TL1,#0FEH修改为:MOV TH1,#0FBHMOV TL1,#0FBH2.采用中断方式,该如何设计程序答:程序如下:ORG 0000HLJMP MAINORG 001BHLJMP T1ORG 0660HT1:CPL ;取反RETMAIN: MOV TMOD,#60h ;T1 计数,工作方式2MOV TH1,#0FEH ;赋初值MOV TL1,#0FEHSETB TR1 ;启动END心得:我们要熟练掌握中断的编程方法和它的原理图。

这样才能随心所欲的修改程序。

相关文档
最新文档