单片机实验报告
- 格式:doc
- 大小:414.50 KB
- 文档页数:29
单片机实验报告实验一:存储器块清零或赋值一、实验目的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: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5),R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。
已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h)假设其和不超过16位。
请编程。
org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1, #79hmov R2,#25hmov R3, #0a4hmov A,R1ADD A,R3mov R5,Amov A,R0ADDC A,R2mov R4,Ass: jmp ssend2双字节无符号数减法例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。
R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。
同学自己可以设置被减数与减数数值org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1,#79hmov R2,#25hmov R3,#0a4hmov A,R1CLR CSUBB A,R3mov R5,Amov A,R0SUBB A,R2mov R4,Ass: jmp ssend3双字节数乘以单字节数例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。
若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。
30H,31H,32H内容 12H,34H,56H ;org 0000hLjmp startorg 0050hstart:mov 30h,#12hmov 31h,#34hmov 32h,#56hmov a,(30h)mov b,(32h)mul abmov R3,bmov R4,amov a,(31h)mov b,(32h)mul abadd A,R3mov R3,Amov A,bADDC A,#00hmov R2,Ass: jmp ssend4. 把8位二进制数转换为3位BCD例4: 利用除法指令把累加器A中的8位二进制数转换为3位BCD 数, 并以压缩形式存放在地址M1、 M2单元中。
单片机实训报告总结篇一:51单片机实训报告“51单片机”精简开发板的组装及调试实训报告为期一周的单片机实习已经结束了。
通过此次实训,让我们掌握了单片机基本原理的基础、单片机的编程知识以及初步掌握单片机应用系统开发实用技术,了解“51”单片机精简开发板的焊接方法。
同时培养我们理论与实践相结合的能力,提高分析问题和解决问题的能力,增强学生独立工作能力;培养了我们团结合作、共同探讨、共同前进的精神与严谨的科学作风。
此次实训主要有以下几个方面:一、实训目的1.了解“51”精简开发板的工作原理及其结构。
2.了解复杂电子产品生产制造的全过程。
3.熟练掌握电子元器件的焊接方法及技巧,训练动手能力,培养工程实践概念。
4.能运用51单片机进行简单的单片机应用系统的硬件设计。
5.掌握单片机应用系统的硬件、软件调试方法二、实验原理流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。
它的电气性能指标:输入电压:~6V,典型值为5V。
可用干电池组供电,也可用直流稳压电源供电。
如图所示:本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。
三、硬件组成1、晶振电路部分单片机系统正常工作的保证,如果振荡器不起振,系统将会不能工作;假如振荡器运行不规律,系统执行程序的时候就会出现时间上的误差,这在通信中会体现的很明显:电路将无法通信。
他是由一个晶振和两个瓷片电容组成的,x1和x2分别接单片机的x1和x2,晶振的瓷片电容是没有正负的,注意两个瓷片电容相连的那端一定要接地。
2、复位端、复位电路给单片机一个复位信号(一个一定时间的低电平)使程序从头开始执行;一般有两中复位方式:上电复位,在系统一上电时利用电容两端电压不能突变的原理给系统一个短时的低电平;手动复位,同过按钮接通低电平给系统复位,时如果手按着一直不放,系统将一直复位,不能正常。
单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。
二、实验器材及原理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灯、按键控制、数码管显示等。
这些技能对于日常生活和工程设计都具有很大的实用性。
在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。
单片机原理与应用实验报告学校:合肥工业大学班级:计算机科学与技术学号:姓名:第一章MC51 单片机原理及应用软件实验实验1:系统认识实验1.实验目的(1)了解ZY15MCU12BC2单片机实验开发装置的接线与安排。
掌握实验箱内拨位开关KF,KC的使用方法。
(2)通过实例程序的编辑、编译、链接及调试,熟悉Keil C51软件的使用方法和基本操作。
(3)教育学生爱抚实验装置,养成良好的实验习惯。
2.试验设备(1)ZY15MCU12BC2单片机实验开发装置一台。
(2)PC系列微机及相关软件。
3.试验内容(1)使用串行通讯电缆将实验开发装置与PC机相连。
(2)开启PC机及实验开发装置,启动Keil C51软件进入uVision2集成开发环境。
(3)确认拨位开关KF的开关为A端,确认89C51处于仿真状态。
(4)在uVision2开发平台上建立并编辑示例程序:计算N个数求和程序。
其中N个数分别放在片内RAM区50H到55H单元中,N=6,求和的结果放在片内RAM区03H(高位)和04H(低位)单元中。
题目:1)32H+41H+01H+56H+11H+03H=?2)895H+02H+02H+44H+48H+12H=?(5)编译连接源程序。
(6)在Keil uVision2主菜单窗口进入DEBUG调试环境,打开存储器窗口输入数据至片内RAM区50H到55H单元中,全速运行程序,并检查程序的运行结果,即观察在存储器窗口片内RAM区03H(高位)、04H(低位)单元中的数据是否正确。
(7)实验结束,撤出接线,将一切整理复原。
4.实验源程序ORG 0000HLJMP MAINORG 1000HMAIN: MOV R2,#06HMOV R3,#03HMOV R4,#04HMOV R0,#50HL1: MOV A,R4ADD A,@R0MOV R4,AINC R0CLR AADDC A,R3MOV R3,ADJNZ R2,L1END5. 实验结果截图6. 实验总结这次试验,熟悉了单片机开发的基本流程,对于实验的两道题目1)32H+41H+01H+56H+11H+03H=?2)895H+02H+02H+44H+48H+12H=?实验结果如上图所示50H~54H存放数据,第一道题计算出来是0x00DEH,第二道题目计算出来是0x0137H,实验结果和预期相符,成功的完成了实验。
51单片机实验报告一、引言51单片机是一种广泛应用于嵌入式系统开发的微控制器芯片。
本实验旨在通过对51单片机的实验研究,加深对该芯片的理解和应用。
二、实验一:LED灯闪烁控制本实验通过编写程序,控制51单片机上的LED灯以特定的频率闪烁。
为了实现这个目标,我们首先需要了解51单片机的引脚布局,确定LED灯的连接方式。
然后,通过编写相应的汇编程序,控制引脚的电平变化,从而实现LED灯的闪烁。
三、实验二:数码管显示数码管是一种常见的输出设备,通过控制引脚的输出来显示特定的数字。
本实验中,我们通过编写程序,实现通过51单片机控制数码管的显示。
通过对数码管的驱动原理和编程的学习,我们可以灵活地控制数码管的显示内容和频率。
四、实验三:蜂鸣器发声蜂鸣器是一种常见的声音输出设备,通过控制引脚的输出来产生特定的声音。
本实验中,我们通过编写程序,实现通过51单片机控制蜂鸣器的发声。
通过学习蜂鸣器的驱动原理和编程,我们可以根据需要产生不同频率和节奏的声音。
五、实验四:温湿度检测温湿度检测是一种常见的环境监测需求。
本实验中,我们通过引入温湿度传感器,实现通过51单片机获取环境的温度和湿度信息。
通过编写程序和读取传感器的数据,我们可以实时监测环境的温湿度,并进行相应的控制和反馈。
六、实验五:红外遥控红外遥控是一种常见的无线通信方式,通过发送和接收红外信号来实现远程控制。
本实验中,我们通过引入红外发射和接收模块,实现通过51单片机进行红外遥控。
通过编写相应的程序,设置红外遥控的编码和解码方式,我们可以实现对外部设备的遥控操作。
七、实验六:定时器应用定时器是51单片机中的重要模块,它可以实现定时和计数等功能。
本实验中,我们通过学习定时器的工作原理和编程,实现通过51单片机进行定时和计数的应用。
通过编写相应的程序和设置定时器的参数,我们可以实现不同的定时和计数功能,满足各种需要。
八、实验七:串口通信串口通信是一种常见的数据通信方式,通过串口接口发送和接收数据。
【报告】南邮单片机实验报告一、实验目的本次南邮单片机实验旨在通过实际操作和实践,深入了解单片机的工作原理、编程方法以及其在实际应用中的功能实现。
通过完成一系列实验任务,提高我们对单片机系统的设计、开发和调试能力,为今后在电子信息领域的学习和工作打下坚实的基础。
二、实验设备1、单片机开发板2、计算机3、编程软件(如 Keil C51)4、下载器5、示波器6、万用表三、实验内容(一)点亮 LED 灯1、原理通过控制单片机的引脚输出高低电平,来控制连接在引脚上的 LED 灯的亮灭。
2、编程实现使用 C 语言编写程序,设置相应引脚为输出模式,并通过循环语句实现 LED 灯的闪烁效果。
3、调试与观察将程序下载到单片机中,观察 LED 灯的闪烁情况,使用示波器测量引脚的电平变化,以验证程序的正确性。
(二)数码管显示1、原理数码管由多个发光二极管组成,通过控制不同段的发光二极管的亮灭,可以显示不同的数字和字符。
2、编程实现编写程序,实现数码管的动态扫描显示,将需要显示的数字或字符转换为对应的段码,并通过定时中断实现动态刷新。
3、调试与观察下载程序后,观察数码管的显示效果,检查是否能够正确显示预定的数字和字符。
(三)按键控制1、原理按键连接到单片机的引脚,当按键按下时,引脚的电平发生变化,通过检测引脚电平的变化来实现按键的识别和响应。
2、编程实现设置引脚为输入模式,采用查询或中断的方式检测按键状态,根据按键的不同操作执行相应的功能。
3、调试与观察按下不同的按键,观察系统的响应是否符合预期,如 LED 灯的状态改变、数码管显示内容的变化等。
(四)温度传感器采集与显示1、原理使用数字式温度传感器(如 DS18B20)采集环境温度,传感器将温度转换为数字信号,单片机通过特定的通信协议读取温度数据。
2、编程实现编写驱动程序,实现与温度传感器的通信,读取温度值,并将其转换为合适的显示格式。
3、调试与观察将传感器置于不同的温度环境中,观察数码管或液晶显示屏上显示的温度值是否准确。
单片机实验报告总结单片机实验报告总结单片机实验心得体会单片机实验心得体会时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。
在学习单片机这门课程之前,就早早的听各种任课老师和学长学姐们说过这门课程的重要性和学好这门课程的关键~~多做单片机实验。
这个学期,我们除了在课堂上学习理论知识,还在实验室做了7次实验。
将所学知识运用到实践中,在实践中发现问题,强化理论知识。
现在,单片机课程已经结束,即将开始考试了,需要来好好的反思和回顾总结下了。
第一次是借点亮LED灯来熟悉keil软件的使用和试验箱上器材。
第一次实验体现了一个人对新事物的接受能力和敏感度。
虽然之前做过许多种实验。
但依旧发现自己存在一个很大的问题,对已懂的东西没耐心听下去,容易开小差;在听老师讲解软件使用时,思路容易停滞,然后就跟不上老师的步骤了,结果需要别人再次指导;对软件的功能没有太大的热情去研究探索,把一个个图标点开,进去看看。
所以第一次试验相对失败。
鉴于此,我自己在宿舍下载了软件,然后去熟悉它的各个功能,使自己熟练掌握。
在做实验中,第二个问题应该是准备不充分吧。
一开始,由于没有课前准备的意识,每每都是到了实验室才开始编程,完成作业,导致每次时间都有些仓促。
后来在老师的批评下,认识到这是个很大的问题:老师提前把任务告诉我们,就是希望我们私下把程序编好。
于是我便在上机之前把程序编好,拷到U盘,这样上机时只需调试,解决出现的问题。
这样就会节约出时间和同学讨论,换种思路,换种方法,把问题给吃透。
发现、提出、分析、解决问题和实践能力是作为我们这个专业的基本素质。
三是我的依赖性很大,刚开始编程序时喜欢套用书上的语句,却对语句的理解不够。
于是当程序出现问题时,不知道如何修改,眼前的程序都是一块一块的被拼凑整合起来的,没法知道哪里错了。
但是编程是一件很严肃的事情,容不得半点错误。
于是便只能狠下决心,坚持自己编写,即使套用时,也把每条语句弄懂。
单片机原理实验报告班级:姓名:学号:实验日期:成绩:实验一基本操作实验目的:熟悉伟福仿真机软件的基本操作,熟悉MCS-51指令。
实验内容A:数据传送程序实验程序:实验步骤:(1)从起始地址开始全速运行程序Ⅰ,检查运行结果, 外部数据窗口中7000H~700FH单元的内容皆为00H;(2)按要求修改程序如Ⅱ,用单步/跟踪运行程序, 查看寄存器和外部数据窗口;(3)在PLUS处设置断点,从起始地址开始全速运行程序,查看寄存器和外部数据窗口;(4)清除断点,用运行到当前行方式将程序运行到PLUS的下一条指令,查看运行结果是否正确。
实验内容B: 1 , 当X>0时求符号函数Y= 0 , 当X=0时-1 , 当X<0时实验程序:实验步骤:(1)准备好三个有代表性的数据,分三次用单步/跟踪方式运行程序,注意PC指针的变化;当(40H)= _____(X>0) 时,ACC.7= 0 , 运行后(41H)= _01H_____(Y= 1),当(40H)= _00H____(X=0) 时,ACC.7= 0 , 运行后(41H)= __00H____(Y= 0),当(40H)= _____(X<0) 时,ACC.7= 1 , 运行后(41H)= FFH (Y=﹣1)(2)思考:能否用“JC POSI ”指令替代“JB ACC.7, POSI ”指令, 修改运行程序,验证结果。
注意“CJNE A, #00H, NZEAR”执行后CY位为0/1 ?单片机原理实验报告班级:姓名:学号:实验日期:成绩:实验二输入/输出控制实验实验目的:掌握单片机I/O口输入输出的控制方法,学会编写数码管的显示程序。
实验内容A:P1 口做输出口,接8只发光二极管L1~L8(高电平时发光二极管点亮),编写程序,使L1~L8流水闪烁。
ORG 0000HSTART: MOV A,#01HMOV R2,#08HLOOP:MOV P1,ALCALL DELAYRL ADJNZ R2,LOOPAJMP STARTDELAY:MOV R5,#40 ;延时1秒D1:MOV R6,#50D2:MOV R7,#248D3:DJNZ R7,D3DJNZ R6,D2DJNZ R5,D1RETEND实验内容B:P1 口做输入口,接拨动开关K1~K8。
实验一:系统认识实验一、设计目的:1. 学习 Keil C51 集成开发环境的操作;2. 熟悉 TD-51 系统板的结构及使用。
二、设计内容:编写程序,将 00H~0FH 共 16 个数写入单片机内部 RAM 的 30H~3FH 空间。
三、设计步骤:1. 创建 Keil C51 应用程序(1)运行 Keil C51 软件,进入 Keil C51 集成开发环境。
(2)选择工具栏的 Project 选项,弹出下拉菜单,选择 NewProject 命令,建立一个新的μVision2 工程。
这时会弹出文件保存对话框,选择工程目录并输入文件名 Asm1 后,单击保存。
(3)工程建立完毕后,μVision2 会马上弹出器件选择窗口。
器件选择的目的是告诉μVision2 使用的 80C51 芯片的型号是哪一个公司的哪一个型号,不同型号的 51 芯片内部资源是不同的。
此时选择 SST 公司的 SST89E554RC。
(4)到此建立好一个空白工程,现在需要人工为工程添加程序文件,如果还没有程序文件则必须建立它。
选择工具栏的 File 选项,在弹出的下拉菜单中选择 New 目录。
(5)输入程序,完毕后点击“保存”命令保存源程序,将 Text1 保存成Asm1.asm。
Keil C51 支持汇编和 C 语言,μVision2 会根据文件后缀判断文件的类型,进行自动处理,因此保存时需要输入文件名及扩展名.ASM 或.C。
保存后,文件中字体的颜色会发生一定变化,关键字会变为蓝色。
(6)程序文件建立后,并没有与 Asm1.Uv2 工程建立任何关系。
此时,需要将 Asm1.asm 源程序添加到 Asm1.Uv2 工程中,构成一个完整的工程项目。
在Project Window 窗口内,选中Source Group1 点击鼠标右键,选择 Add Files to Group‘Source Group1’命令,此时弹出添加源程序文件对话框,选择文件Asm1.asm,点击 Add 命令按钮即可将源程序文件添加到工程中。
西安电子科技大学机电院单片机上机实验报告第一次实验:编程与环境学习[实验目的]1) 熟悉µ’nSP™ IDE环境及在该环境下用汇编语言或C语言编写应用程序;2) 熟悉简单的µ’nSP™汇编语言指令。
[实验设备]装有WINDOWS系统和µ’nSP™ IDE仿真环境的PC机一台。
[实验内容[1)用汇编实现1到200中的偶数的累加计算;2)用汇编语言编写一个排序程序。
.IRAMArray .DW 5,89,40,12,55,32,18,46,77,21[实验步骤]1)将µ’nSP™ IDE打开后,建立一个新工程;2)在该项目的源文件夹(SOURCE FILES)下建立一个新的汇编语言文件;3)编写汇编代码;4)编译程序软件调试观察并跟踪其结果。
[实验准备](要求实验前写出实验内容中的两个程序)实验1:实验程序:.RAM //定义RAM 段.VAR G_Sum; //定义G_Sum 存储累加结果.CODE //定义CODE.PUBLIC _main; //主程序声_main:R1 = 0x0002;R2 = 0x0000;L_SumLoop:R2 += R1; //累加值保存到R2R1 +=2 ;CMP R1,200; //是否加到100JNAL_SumLoop; //否返回到L_SumLoop;[G_Sum] = R2; //保存最终值L_ProgramEndLoop:JMPL_ProgramEndLoop;.END实验2:实验程序:.IRAMArray .DW 5,89,40,12,55,32,18,46,77,21.var flag//定义数据交换标志.code.public _main_main:R1=0x000a; //设置要比较的数的个数;BP=Array;//取待排序数的有效地址;R4=0x0000;[flag]=R4 ;//清交换标志L_LOOP:R2=[BP];R3=[BP+1];cmp r2,r3;//比较相邻两数的大小;JBE L_LOOP1;[BP]=R3;//不符合大小顺序,交换位置,存储在原位置[BP+1]=R2 ;R3=0x0001 ;[flag]=R3;//交换标志置1L_LOOP1:BP=BP+1;//符合大小顺序的两数位置R1-=1;JNZ L_LOOP;R4=[flag];Jnz _main;MAINLOOP: //看门狗操作nop:jmp MAINLOOP;.END[实验总结]第二次实验:并行I/O口(可参考实验三、四、五、六)实验三:使用汇编语言实现A口的输出实验实验四:使用C语言实现A口的输出实验实验五:使用汇编语言实现A口为输入B口为输出实验实验六:使用C语言实现A口为输入B口为输出实验[实验目的]1)通过实验掌握A口、B口作为输入和输出口时的使用方法;2)使用汇编语言或C语言来实现A口或B口作为输入和输出口的实验。
[实验原理]实验三、四:通过点亮不同发光二极管来显示A口输出的数值不同。
实验五、六:根据按键的不同,A口的数据就不同,则传送到B口的数据就不同,相应的发光二极管被控制。
1)逻辑电平指示灯:具有8 路,阳极接电阻排至V5( Vcc),I/O 端口低电平“点亮”。
逻辑电平指示灯电路8 路图见下图:逻辑电平指示灯电路原理图2)1*8键盘电路可分别“H”或“L”,由SW 选择,配合内部的上拉/下拉电阻合理使用。
1*8 键盘电路原理图[实验硬件连接]实验三、四:实验五、六:[实验内容]1、学习实验三或实验四,写出实验结果。
答:实验三的结果:从低位到高位,按照二进制1出现的顺序,依次点亮对应位的灯。
2、学习实验五或实验六,写出实验结果。
答:实验五的结果:开始时,所有灯全灭,每次按一个开关,相应的灯就是被点亮。
松开后,相应的灯再一次熄灭。
3、对实验五或六修改,将以前的输入与输出口进行变换,即按键连接B口作为输入,A口为输出连接发光二极管,并要求发光二极管事先全灭,按下键时控制相应的二极管亮。
说明如何修改,写出修改地方的程序。
(注:不要在源文件中修改。
重新建立项目或拷贝到其它地方进行修改)Main函数里:L_User_Init_IO: 改为:L_User_Init_IO:R1 = 0x0000; R1 = 0x0000;[P_IOA_Dir] = R1; [P_IOB_Dir] = R1;[P_IOA_Attrib] = R1; [P_IOB_Attrib] = R1;[P_IOA_Data] = R1; [P_IOB_Data] = R1R1 = 0xffff; R1 = 0xffff;[P_IOB_Dir] = R1; [P_IOA_Dir] = R1;[P_IOB_Attrib] = R1; [P_IOA_Attrib] = R1;R1 = 0x0000; R1 = 0x0000;[P_IOB_Data] = R1; [P_IOA_Data] = R1;RETF; RETF;KEY函数里:(1)F_Key_Scan_ServiceLoop:r1 = [P_IOA_Data]; //从IOA口获取按键数据改为:F_Key_Scan_ServiceLoop:r1 = [P_IOB_Data] ; //从IOB口获取按键数据(2)F_Key_Scan_ServiceLoop_2:r1 = [P_IOA_Buffer];//IOA7位置为0r1 &= 0xFF7F;[P_IOA_Buffer] = r1;r1 = [P_IOA_Data]; //从IOA口获取按键数据r1 &= 0x000F;r2 = r1;r3 = r2 xor 0xffff;nop;nop;r1 = [P_IOA_Buffer];// IOA7位置为1r1 |= 0x0080;[P_IOA_Buffer] = r1;r1 = [P_IOA_Data];改为:r1 = [P_IOB_Buffer]; // IOA7位置为0r1 &= 0xFF7F;[P_IOB_Buffer] = r1;r1 = [P_IOB_Data];//从IOB口获取按键数据r1 &= 0x000F;r2 = r1;r3 = r2 xor 0xffff;nop;nop;r1 = [P_IOB_Buffer]; // IOA7位置为1r1 |= 0x0080;[P_IOB_Buffer] = r1;r1 = [P_IOB_Data];(注:程序主要的修改是调换A、B口属性值,由于要求发光二极管事先全灭,所以把原来的同相改为反相,而初始值不变([P_IOB_Data]=0x0000)。
[实验总结]实验三中,题目要求使用B入A出,我一开始,只修改了main.asm中的相关位置,发现结果不对,后来当我一点一点分析后发现,key.asm中的相关代码页需要修改。
最后实验成功了。
在以后的实验中,不但要看懂主程序,也要搞清楚其子程序和相关函数的实现。
第三次实验:系统时钟与定时器参看:实验七:定时器Timer A/B实验实验八:系统时钟实验[实验目的]1)通过实验了解定时器Timer A/B的结构及使用方法;掌握预置数单元P_TimerA/B_Data和定时控制单元P_ TimerA/B_Ctrl的设置方法;熟悉定时器Timer A/B的编程方法。
2)了解SPCE061 PLL 振荡器的功能及其应用;掌握系统时钟单元P_SystemClock的设置方法;熟悉系统时钟和CPU时钟频率的编程方法。
[实验原理]实验七:TimerA和TimerB定时器启动后在预置数单元P_TimerA_Data或P_TimerB_Data内置入一个计数初值N后,定时器/计数器会在选择的时钟源频率下开始向计数增加的方向计数,N+1,N+2,……FFFEH,当计数到FFFFH后定时器/计数器溢出。
一方面,产生一个中断请求信号TA_TimeOut_Int或TB_TimeOut_IntCPU,响应后执行相应的中断服务程序,与此同时计数初值N会被自动重新置入定时器/计数器内并重复上述加计数的过程。
另一方面,该溢出信号会作为脉宽调制输出计数器的时钟源输入,使其输出一个具有四位可调的脉宽调制占空比输出信号APWMO或BPWMO,其中IOB8,IOB9分别为APWM,BPWM的输出端。
IOB8接一个发光二极管,可以通过观察二极管亮灭的快慢来对比频率的变化。
实验八:在SPCE061A内,P_SystemClock(写)($7013H)单元控制着系统时钟和CPU时钟,通过设置该单元的b5-b7位可以改变系统时钟的频率(Fosc=20/24/32/40/49MHz);将第0-2位置为111可以使CPU时钟停止工作,系统切换至低功耗的备用状态。
本实验通过选择不同Fosc信号频率或改变CPUClk频率来观察发光二极管亮灭的快慢。
[实验硬件连接]实验七:定时器A时,IOB8接一个发光二极管实验八:[实验内容]1)学习实验七、八;2)对于实验七,1、固定初值,改变不同的输入时钟观察输出的变化;改变:LED灯闪烁频率发生变化。
频率越大,闪烁越快。
2、固定时钟,如CLK为4096HZ,设置不同的计数初值,观察输出;答:改变R1: R1=0xff9f;[P_TimerA_Data]=R1;R1=C_Time_Clk_4096;LED灯闪烁频率发生变化。
计数初值越小。
闪烁越慢。
3、选择同一时钟源,改变占空比,观察灯的闪烁变化。
答:周期不变,但在一个周期内,LED灯点亮的时间改变。
3)将实验七中的定时器A改用定时器B完成。
应作怎样的修改?写出修改的地方。
.DEFINE P_TimerB_Data 0x700C;.DEFINE P_TimerB_Ctrl 0x700D;_main:R1=0x0200; //IOB9 设置为同相低电平输出口[P_IO B_DIR]=R1;[P_IO B_ATTRI]=R1;R1=0x0000;[P_IO B_DATA ]=R1;R1=0x0200;[P_Feedback]=R1; //设置IOB9 口为BPWMO 端口R1=0xff9f; //设定TA_TIMEOUT/16=(C_Time_Clk/96)/16=8kHz//R1=0x0f9f;[P_Timer B_Data]=R1;R1=C_Time_Clk;//R1=C_Time_Pwm[P_Timer B_Ctrl]=R1;注:定义P_TimerB_Data和P_TimerB_Ctrl,改特殊功能输出口IOB8为IOB9并改变[P_Feedback]的值;4)对实验八1 选择不同FOSC信号频率,观察发光二极管亮灭快慢;2 改变CPUCLK频率,观察发光二极管亮灭快慢。