




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录目录1实验一 数据转移实验3一、实验目的:3二、实验内容:3三、实验设备与仪器3四、实验原理3五、实验步骤5六、思考题8实验二 定时器控制P1口亮灯实验9一、实验目的9二、实验内容9三、实验设备与仪器9四、实验原理9五、实验步骤11六思考题12实验三 拆、拼字程序14一、实验目的14二、实验内容14三、实验设备与仪器14四、实验原理14五、实验步骤15六、思考题17实验四 8255控制交通灯实验18一、实验目的18二、实验内容18三、实验设备与仪器18四、实验原理18五、实验步骤20六、思考题23实验五 数据冒泡排序实验24一、实验目的24二、实验项目24三、实验设备与仪器24四、实验原理24五、实验步骤25六、思考题27实验六 A/D转换实验29一、实验目的29二、实验项目29三、实验设备与仪器29四、实验原理29五、实验步骤31六、思考题32实验七 多分支程序34一、实验目的34二、实验项目34三、实验设备与仪器34四、实验原理34五、实验步骤35六、思考题36实验八 D/A转换实验37一、实验目的37二、实验项目37三、实验设备与仪器37四、实验原理37五、实验步骤39六、思考题4041实验一 数据转移实验一、实验目的:1理解单片机内存组织结构;2掌握数据传送、转移等基本指令的用法;3熟悉在IDE中编程、调试程序的一般方法。二、实验内容:1编写一段程序完成下列内容(1) 将自己姓名拼音大写字母的ASCII码(校验位=0)放入ROM 0300H开始的一段连续地址内;(2) 从ROM中读出上述数据,每位数据与R3的内容相加后存放至内部RAM的30H开始的一段连续地址空间中。(3) 完成(2)后,再将内部RAM中的数据还原成ASCII码,并存放至外部RAM 0100H开始的一段连续地址中。2上机调试程序,并使用Keil查看执行后相关存储单元的内容。有条件的同学可在实验箱上完成。三、实验设备与仪器1PC机(安装Keil uVision软件) 1台四、实验原理1ROM数据的读写 顾名思义只读存储器ROM,在程序执行期间是只读的,其内容无法再程序运行期间更改;因此存放于ROM内的数据除了指令码外,多为不需改动的常数常见的有LED数码管的字段码、ASCII字符表、要输出的不规则曲线上的采样值等等。常数存放于ROM内,一般通过伪指令嵌入在程序代码之中,当下载程序或烧写单片机芯片时,随同指令机器码一起被烧写至ROM内。MCS-51访问ROM必须使用变址寻址,汇编指令只有两条:(1)MOVC A,A+DPTR ;通过DPTR基址变址寻址(2)MOVC A, A+PC ;当前PC值作为基址变址寻址在c语言编程中,可用常数数组来构造ROM常数表。例: unsigned char code MYNAME12= “ZHANGYICHENG”;2访问内部RAM 汇编指令中所有MOV 指令均可用于访问内部RAM; C语言编程时,可用指针变量来访问特定的RAM单元。3外部RAM 汇编指令中使用MOVX 指令来访问外部RAM,需要注意的是,容量较大的外部RAM使用16位地址,需要通过16位寄存器DPTR来间址寻址;对于寻址范围较小的情况,也可以通过Ri或DPL来实现间址寻址。4程序设计 根据实验内容,可设计如图1所示程序流程图:图1 实验程序流程图 五、实验步骤1根据实验内容编写实验程序如下:ORG 0000HAJMP MAINORG 0040HMAIN:MOV DPTR,#DATAS;DPTR指向ROM中300H的数据 MOV R3,#1;欲加密的内容 MOV R0,#30H;指向片内RAM中30H的单元 MOV R7,#14;欲处理的数据个数LOOP1:CLR A;将ROM中300H中的内容取出并加密,然后送到 MOVC A,A+DPTR;片内RAM的30H开始的单元中 ADD A,R3;进行加密 MOV R0,A;将加密后的数据存到R0所指向的RAM单元 INC DPTR;指向ROM中的下一个单元 INC R0;指向RAM中的下一个单元 DJNZ R7,LOOP1;判断数据是否处理完毕;将RAM中30H的单元取出并解密,然后存到片外;RAM中100H单元中MOV DPTR,#100H ;DPTR指向片外RAM中100H单元 MOV R0,#30H;指向片内RAM中30H的单元 MOV R7,#14;欲处理的数据个数LOOP2:CLR C MOV A,R0;取出R0指向RAM单元的数据并解密 SUBB A,R3 MOVX DPTR,A;将解密完的数据存放到片外RAM中100H开始的单元 INC DPTR;指向片外RAM中的下一个单元 INC R0 ;指向RAM中的下一个单元 DJNZ R7,LOOP2;判断数据是否处理完毕 SJMP $ ORG 0300HDATAS:DB FANG PAI SHENG;用伪指令DB定义位于ROM中0300H中的数据END2在Keil uVision3中建立工程,并输入编制好的程序源代码,然后保存为*.asm文件;对该工程进行编译连接工作。3使用Keil uVision3的调试功能运行程序,如图2所示:图2 Keil uVision3 IDE工具4进入Keil uVision3的调试界面,并在View下打开“memory window”视窗,如图3所示,并在该视窗下分别查看ROM,内部RAM及外部RAM相关地址范围值(输入“C:0X0300H”用于查看片内ROM地址为0300H开始的单元的内容,输入“D:0X30H”用于查看片内RAM地址为30H开始的单元的内容,输入“X:0X0100H”用于查看片外RAM地址为0100H开始的单元的内容,),验证程序执行结果的正确性。图3 查看内存观察窗5实验结果1)程序运行前的结果如图46所示:图4 程序运行前ROM中内容图5 程序运行前片内RAM中内容图6 程序运行前片外RAM中内容2)程序运行后的结果如图79所示:图7 程序运行后ROM中内容图4 程序运行后片内RAM中内容图4 程序运行后片外RAM中内容6实验结论 从上面图49的比较可知,在程序运行前后片中ROM的内容始终不变;程序运行前片内RAM和片外RAM中的内容均为复位后的值,即均为00H;程序运行后,片内RAM 30H开始的单元的内容变为片内ROM 0300H开始的单元中的内容与R3的值相加后的加密值,片外RAM 0100H开始的单元的内容变为片内RAM 30H开始的单元中的内容与R3的值相减后的解密值。六、思考题1、试用汇编或C编写一个内存复制函数 CPRAM(), 用户输入的参数包括:源数据内存起始地址,目标空间的起始地址,要复制的字节数。通过调用该函数可以实现将数据由内部RAM复制到外部RAM。答:采用汇编编写该程序,在主程序中调用该函数时,要提供的参数为: MOV R0,#DATA1;DATA1为内存的起始地址(内部RAM)MOV DPTR,#DATA2 ;DATA2为目标空间的起始地址(外部RAM)MOV R7,#DATA3;DATA3为复制的字节数程序设计如下:ORG 0400HCPRAM:MOV A,R0; 从R0指向的单元取出欲复制的内容 MOVX DPTR,A; 将欲复制内容传送到由DPTR指向到片外RAM单元 INC R0; 指向RAM中的下一个单元 INC DPTR; 指向片外RAM中的下一个单元 DJNZ R7,CPRAM; 判断数据是否复制完毕 RET实验二 定时器控制P1口亮灯实验一、实验目的1.熟悉MCS51定时/计数器的初始化编程方法,掌握根据延时要求计算定时器初值的方法。2.理解定时器溢出中断的概念,掌握中断服务程序的编程方法。3.学习并行口的使用方法。二、实验内容1定时/计数器T0工作于定时方式1,P1.0P1.7为LED发光二极管小灯输出口,晶振的频率为12Mhz,要求采用定时中断方式,使LED小灯间隔1s从右到左循环点亮。2使用上位机(PC)按要求编制实验程序。3调试实验程序,观察输出结果。三、实验设备与仪器1DRZ-51V20开发板 1台2PC机 1台四、实验原理1)实验原理图如图1所示:图1 实验原理图2)通过编程使用8051内部的定时器T0计时,当时间到(定时/计数器溢出)时,往并行口P1送数据,点亮外部扩展的LED小灯。程序流程图如图2所示。图2 程序框图五、实验步骤1根据实验内容编写实验程序如下:;由于12M的晶振,T0方式1定时的最长时间为65.536ms,所以设置辅助变量B用;于定时1SORG 0000HAJMP MAINORG 000BH;T0的中断矢量跳转AJMP IIT0 ORG 0040HMAIN:MOV SP,#60H;设置堆栈MOV B,#20;辅助变量,用于定时1SMOV TMOD,#01H;设置定时器T0工作于方式1MOV TH0,#3CH;设置定时器的初值MOV TL0,#0B0HSETB TR0;启动定时器T0SETB ET0;开中断SETB EAMOV A,#0FEH;初始化A,即要送出的数码MOV P1,ASJMP $;等待中断 ;T0的中断服务子程序ORG 0100HIIT0:MOV TH0,#3CH;重新设置T0的初值MOV TL0,#0B0HDJNZ B,LOOP;判断是否定时到达1S,若没有则返回主程序等待MOV TH0,#3CH;重新设置T0的初值MOV TL0,#0B0HMOV B,#20;重新设置辅助变量,以定时1SRL A;待送出的内容左移一位 MOV P1,A;送出数码,实现流水灯的功能LOOP:RETI;返回主程序END2在Keil uVision3中建立工程,并输入编制好的程序源代码,然后保存为*.asm文件;对该工程进行编译连接工作。3将DRZ-51V20开发板与计算机连接,并将编译完成后生成的*.hex文件下载到开发板,如图3所示。图3 用下载软件下载程序到开发板4实验现象 将程序下载到开发板后,按下开发板的复位按钮,可以看到每隔1S,小灯D0D7从右到左分别点亮,形成流水灯的现象,修改程序可以使得小灯D0D7的点亮方向相反,修改定时器的初值和B的值可以得到其他的一些效果。六思考题1.定时器T0的中断入口地址为 000BH ,T1的中断入口地址为 001BH ,T2的中断入口地址为 002BH ;80C51 没有 (有/没有)定时器T2。2.跟定时器相关的特殊寄存器有哪些?写出这些寄存器各位的功能。答:与定时器相关的寄存器有工作模式寄存器TMOD、控制寄存器TCON,另外还有中断允许控制寄存器IE和中断优先级控制寄存器IP。各个寄存器各位的功能分别为:中断允许控制寄存器IE中与定时器相关的位有ET0、ET1,分别用于定时器/计数器T0和定时器/计数器T1的溢出中断允许位,该位为0时,禁止中断,该位为1时,允许中断;此外,还有EA为,是中断的总控制位。中断优先级控制寄存器IP与定时器相关的位有PT0、PT1,分别用于定时器/计数器T0和定时器/计数器T1的中断优先级控制,该位为0时,为低优先级,为1时为高优先级。工作模式寄存器TMOD各位的作用如图4所示:图4 TMOD各位的定义及意义控制寄存器TCON各位的作用如图5所示:图5 TCON各位的定义及意义3. 什么叫中断优先级?跟中断控制相关的寄存器有哪些?假设要求定时器T0溢出后检查有无外部中断0(/INT0)信号,则IP、IE的值应该为多少?如果要求在收到外部中断1(/INT1)信号后,定时器T0才开始计时,IP、IE的值又应该为多少? 答:中断优先级指的是CPU对中断的响应次序。跟中断相关的寄存器有SCON、控制寄存器TCON,另外还有中断允许控制寄存器IE和中断优先级控制寄存器IP。若要使定时器T0溢出后检查有无外部中断0(/INT0)信号,则IP、IE的值分别为:02H、83H。若要在收到外部中断1(/INT1)信号后,定时器T0才开始计时,IP、IE的值又应该为:04H、86H。实验三 拆、拼字程序一、实验目的 1. 进一步熟悉PC机编程集成环境的使用。2. 熟悉半字节传送指令、逻辑指令等的用法以及通过逻辑指令屏蔽位内容的方法。3. 掌握单片机程序的一般设计方法及调试方法。二、实验内容1. 把预存在片内RAM 40H的内容拆分,高位送51H低位,低位送52H低位,51H、52H高位清零,一般本程序用于把数据送显示缓冲区时用。ABH40H0AH51H0BH52HCDH50H0CH40H0DH41H 图1 拆字过程 图2 拼字过程2. 把预存在片内RAM 40H、41H的低位分别送入50H高位和低位,一般本程序用于把显示缓冲区的数据取出拼装成个字节。三、实验设备与仪器1PC机(安装Keil uVision软件) 1台四、实验原理1. 字节数据中位处理的常用方法:(1)某位与“0”取与,可将该位清零;(2)某位与“1”取或,可将该位置1;(3)与“1”取异或,可将位数据取反。2. 参考流程图 图3 拆字流程图图4 拼字流程图五、实验步骤1根据实验内容编写实验程序如下:ORG 0000HAJMP MAINORG 0040HMAIN:MOV 40H,#0ABHMOV A,40H;将待拆的内容送到累加器AANL A,#0F0H;屏蔽低4位SWAP A;高4位与低4位交换位置MOV 51H,A;保存高4位MOV A,40H;重新将待拆的内容送到累加器AANL A,#0FH;屏蔽高4位MOV 52H,A;保存低4位MOV 40H,#0CHMOV 41H,#0DHMOV A,40H;将待拼的内容送到累加器AANL A,#0FH;屏蔽高4位SWAP A;将取出的低4位放在高4位的位置MOV 50H,A;保存中间结果MOV A,41H;取出另一个待拼的内容送到累加器AANL A,#0FH;屏蔽高4位ORL 50H,A;与中间结果求或,得到结果SJMP $END2在Keil uVision3中建立工程,并输入编制好的程序源代码,然后保存为*.asm文件;对该工程进行编译连接工作。3使用Keil uVision3的调试功能运行程序进入Keil uVision3的调试界面,并在View下打开“memory window”视窗,并在该视窗下查看内部RAM相关地址范围值(输入“D:0X50H”用于查看片内RAM地址为30H开始的单元的内容),验证程序执行结果的正确性。4实验结果1)程序运行前的结果如图56所示:图5 程序运行前片内RAM 50H单元图6 程序运行前片内RAM 40H单元2)程序运行后的结果如图78所示:图5 程序运行后片内RAM 50H图5 程序运行后片内RAM 40H5实验结论 通过本实验基本上了解了对RAM数据的操作方法。六、思考题1. 外部RAM里0200H开始的连续单元内存有n个符号数的原码,试编写程序求出各数的补码,并存放至内部RAM中。答:程序如下:ORG 0000HAJMP MAINORG 0040HMAIN:MOV DPTR,#0200H;设置外部RAM的地址MOV R7,#n;设置待处理数据的个数MOV R0,#DATA1; DATA1为内部RAM的地址LOOP1:MOV A,DPTR;取外部RAM的数据CPL A;求补码INC AMOV R0,A;将求得的补码放到R0所指向的片内RAM中INC R0;指向RAM中的下一个单元INCDPTR;指向片外RAM中的下一个单元DJNZ R7,LOOP1; 判断数据是否求补完毕SJMP $实验四 8255控制交通灯实验一、实验目的1.了解8255的工作方式及编程方法。2.掌握用8255扩展并行口的方法。3.学习模拟交通灯控制的实现方法。二、实验内容1. 根据要求在单片机实验箱上接线。2. 使用上位机(PC)按要求编制实验程序。3. 调试实验程序,观察输出结果。三、实验设备与仪器1DVCC 1台2PC机 1台四、实验原理8255A是Intel公司生产的通用可编程并行I/O接口芯片,可为外设提供三个8位I/O端口,允许采用同步、异步和中断方式传送I/O数据。图1 8255A内部原理图本实验中用PA07 及PB03外接LED小灯来模拟交通灯,PA、PB口均工作于方式0,用作通用输出端,以控制LED小灯。实验电路原理图如图2所示。图2 实验原理图图2 实验程序框图实验程序流程图如图3所示五、实验步骤1. 实验的具体内容 L1L3,L7L9模拟东西向的红黄绿灯,L4L6,L10L12模拟南北向红黄绿灯。初始态为东西南北向的红灯点亮,然后进入状态一:东西向绿灯亮,南北向红灯亮。过一段时间后进入状态二:东西向绿灯灭,黄灯闪烁几次。然后进入状态三:南北绿灯亮,东西红灯亮。过一段时间后进入状态四:南北绿灯熄灭,黄灯闪烁几次。然后不断重复状态一至四。2根据实验内容编写实验程序如下:ORG 0000HAJMP MAINORG 000BHAJMP IIT0ORG 0040HMAIN:MOV SP,#60H;设置堆栈MOV TMOD,#01H;设置定时器初值MOV TH0,#3CHMOV TL0,#0B0HSETB ET0;开中断SETB EACLR F0;清零定时到标志位MOV A,#80H;初始化8255A,PA、PB口均工作于方式0,用作通用输MOV DPTR,#0FFFBH;出端,C口未用MOVX DPTR,ALOOP2:MOV A,#0CH;东西红灯亮,南北绿灯亮的数码送8255AMOV DPTR,#0FFF8HMOVX DPTR,AMOV A,#03HINC DPTRMOVX DPTR,A MOV B,#100SETB TR0;启动时钟JNB F0,$;等待定时到5SCLR F0;清零标志位,为下一次定时做准备CLR TR0;关闭时钟MOV R7,#10;黄灯闪亮次数LOOP1:MOV A,#08AH;东西红灯亮,南北黄灯闪亮的数码送8255AMOV DPTR,#0FFF8HMOVX DPTR,AMOV A,#02HINC DPTRMOVX DPTR,AMOV B,#4SETB TR0;启动时钟JNB F0,$;等待定时到200mSCLR F0;清零标志位,为下一次定时做准备CLR TR0;关闭时钟MOV A,#08HMOV DPTR,#0FFF8HMOVX DPTR,AMOV A,#02HINC DPTRMOVX DPTR,AMOV B,#4SETB TR0;启动时钟JNB F0,$;等待定时到200mSCLR F0;清零标志位,为下一次定时做准备CLR TR0;关闭时钟DJNZ R7,LOOP1MOV A,#61H;南北红灯亮,东西绿灯亮的数码送8255AMOV DPTR,#0FFF8HMOVX DPTR,AMOV A,#08HINC DPTRMOVX DPTR,A MOV B,#100SETB TR0;启动时钟JNB F0,$;等待定时到200mSCLR F0;清零标志位,为下一次定时做准备CLR TR0;关闭时钟MOV R7,#10;黄灯闪亮次数LOOP3:MOV A,#051H;南北红灯亮,东西黄灯闪亮的数码送8255AMOV DPTR,#0FFF8HMOVX DPTR,AMOV A,#04HINC DPTRMOVX DPTR,AMOV B,#4SETB TR0;启动时钟JNB F0,$;等待定时到200mSCLR F0;清零标志位,为下一次定时做准备CLR TR0;关闭时钟MOV A,#41HMOV DPTR,#0FFF8HMOVX DPTR,AMOV A,#00HINC DPTRMOVX DPTR,AMOV B,#4SETB TR0;启动时钟JNB F0,$;等待定时到200mSCLR F0;清零标志位,为下一次定时做准备CLR TR0;关闭时钟DJNZ R7,LOOP3LJMP LOOP2;循环ORG 0200HIIT0:MOV TH0,#3CH;重新设置定时器初值MOV TL0,#0B0HDJNZ B,LOOP;根据需要设置定时时间MOV TH0,#3CH;重新设置定时器初值MOV TL0,#0B0HSETB F0;设置定时器标志位LOOP:RETIEND2在Keil uVision3中建立工程,并输入编制好的程序源代码,然后保存为*.asm文件;对该工程进行编译连接工作。3将DVCC开发板与计算机连接,并将编译完成后生成的*.hex文件下载到DVCC实验箱。4实验现象 将程序下载到DVCC实验箱后,按下DVCC实验箱的复位按钮,可以看到的东西先亮红灯(其他灯灭,以下同),南北先亮绿灯;5S后,南北黄灯闪亮10次后,南北红灯亮,同时东西绿灯亮;5S后,东西黄灯闪亮10次后,东西红灯亮,同时南北绿灯亮,如此循环。六、思考题1.DAIS实验箱的8255选口地址分配为: A口FFD8H , B口FFD9H,C口FFDAH,D口FFDBH。假设地址线中P0.4/P0.3/P0.2接138译码器,问此时8255的片选引脚(/CS)应接在译码器的哪个输出引脚上?地址线P0.1/P0.0又应该接到什么地方?答:地址线中P0.4/P0.3/P0.2接138译码器,此时8255的片选引脚(/CS)应接在译码器的Y6输出引脚,地址线P0.1/P0.0又应该接8255的A0、A1。2.8255的PA端口有几种工作方式?本实验中用到的又是哪一种?试叙述每种方式的特点。答:8255A的A口有3种工作方式:无条件I/O方式、选通I/O方式和双向选通I/O方式,本实验用到的是无条件I/O方式。每种方式的特点如下:1)方式0是一种基本的I/O方式,在这种方式下,3个端口都可以由程序设置为输入或者输出,没有固定的应答信号,其特点为:具有两个8位端口(、)和两个位端口(口的高位和口的低位),任何一个端口都可以设定为输入或输出,每一端口输出时锁存,而输入时不锁存。)方式是一种选通I/O方式,在这种工作方式下,口和口作为数据I/O口,口用作I/O口的应答信号,口和口既可以作输入,也可以做输出,输入和输出都具有锁存功能。)方式是一种双向选通I/O方式,只适合于端口,这种方式能够实现外设与8255A的A口的双向数据传送,并且输入和输出都是锁存的,它使用C口的5位作应答信号,两位作中断允许控制位。3.本实验只是模拟交通灯控制的工作状态,如果真的要设计一个十字路口交通灯控制器,你觉得还应该考虑哪些问题?试设计一个更接近于实际应用的交通灯控制系统。 答:若要设计一个十字路口交通灯控制器,还需要显示部分,更复杂的功能有利用模糊控制算法,能够根据实际的车流量,控制红绿灯的变化时间。一个更接近于实际应用的交通灯控制系统应该采用PLC,以驱动大功率的红绿灯和显示器,同时可以根据该交通灯的安置位置是否重要决定是否采用模糊控制算法或安装条件决定是否采用太阳能电池进行供电。实验五 数据冒泡排序实验一、实验目的1. 熟悉8051指令系统,掌握程序设计方法。2了解数据排序的简单算法。3了解数列的有序和无序概念二、实验项目1. 编写并调试一个排序子程序,其功能为用冒泡法将内部RAM中几个单字节无符号的正整数,按从小到大的次序重新排列。2. 在内部RAM中的某块存储区放入不等的数据,运行本实验程序后检查该块内容是否按从小到大排列。三、实验设备与仪器1PC机 1台四、实验原理有序的数列更有利于查找。本程序用的是“冒泡排序”法在由低至高的地址空间内将数据由小到大排序,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。再进行下一轮比较,找出第二大数据,直到全部数据有序。实验程序流程图如图1所示。图1 程序流程图五、实验步骤1根据实验内容编写实验程序如下:ORG 0000HAJMP MAINORG 0040HMAIN:MOV R0,#60H;在内存中存入一组数据MOV R7,#10MOV A,#9LOOP1:MOV R0,ADEC AINC R0DJNZ R7,LOOP1LOOP3:MOV R0,#60H;指向数据块首地址MOV R7,#9;比较9次CLR F0;交换标志位清零LOOP2:MOV A,R0;取相邻两数中的前一个数MOV 70H,AINC R0MOV A,R0;取相邻两数中的后一个数CJNE A,70H,LOOP;相邻两数比较LOOP:JNC NEXT;前者小于后者转至NEXT XCH A,70H;前者大于后者,相邻两数互换MOV R0,ADEC R0MOV R0,70HINC R0;恢复数据块指针SETB F0;置1标志位NEXT:DJNZ R7,LOOP2;所有相邻两数未比较完,转至LOOP2JB F0,LOOP3;交换标志位为1,转至LOOP3SJMP $END2在Keil uVision3中建立工程,并输入编制好的程序源代码,然后保存为*.asm文件;对该工程进行编译连接工作。3使用Keil uVision3的调试功能运行程序进入Keil uVision3的调试界面,并在View下打开“memory window”视窗,并在该视窗下查看内部RAM相关地址范围值(输入“D:0X60H”用于查看片内RAM地址为30H开始的单元的内容),验证程序执行结果的正确性。4实验结果1)程序运行前的结果如图2所示:图2 程序运行前片内RAM 60H单元2) 程序运行后的结果如图3所示:图3 程序运行后片内RAM 60H单元5实验结论 从程序运行前后的结果对比可知,程序实现了内存数据从小到大的排列。六、思考题1修改程序把存储区中内容按从大到小排列。答:如果要使得程序把存储区中内容按从大到小排列只需要将程序a)比较相邻两数大小之后的判断修改成b)所示的形式即可:a) CJNE A,70H,LOOP;相邻两数比较LOOP:JNC NEXT;前者小于后者转至NEXT修改为:b) CJNE A,70H,LOOP;相邻两数比较LOOP:JC NEXT;前者大于后者转至NEXT2试将下述C程序翻译成汇编语言,并说明它与本实验的算法有什么不同?for(i=0;iN-1;i+) for(j=i+1;jaj) temp = ai; ai = aj; aj = temp; C程序翻译成汇编语言如下:MOV 21H,#NMOV 20H,#N-1MOV RO,#DATA1CLR ALOOP3:CJNE A,20H,LOOP1AJMP RETTLOOP1:INC AMOV 22H, ALOOP2:INC ACJNZ A,21H,LOOP4MOV A,22HAJMP LOOP3LOOP4:MOV 23H,AMOV 25H,R0MOV A,22HADD A,25MOV RO,AMOV 24H,R0MOV A,23HADD A,25HMOV R0,AMOV A,R0CJNE A,24H,LOOP5LOOP5:JCXCH A,24HMOV R0,ADEC R0MOV R0,24HINC ROAJMP LOOP3RETT:RET以上汇编的算法与本实验的算法基本相同,均为冒泡法排序,而与本实验的算法利用的是标志位的方式,而以上汇编算法利用的是内嵌循环的方式。实验六 A/D转换实验一、实验目的1. 掌握A/D转换与单片机的接口方法。2. 了解A/D芯片0809转换性能及编程方法。3. 通过实验了解单片机如何进行数据采集。二、实验项目1. 根据要求在单片机实验箱上接线。2. 使用上位机(PC)按要求编制实验程序。3. 调试实验程序,观察输出结果。三、实验设备与仪器1DVCC 1台2PC机 1台四、实验原理A/D转换器大致分有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。实验用ADC0809属第二类,是8位A/D转换器。每采集一次一般需100s。由于ADC0809 A/D转换器转换结束后会自动产生EOC信号(高电平有效),取反后将其与8031的一个I/O相连,可以用查询方式读取A/D转换结果。硬件连线图如图1所示:图1 实验原理图实验程序流程图如图2所示。图2 实验程序框图五、实验步骤1根据实验内容编写实验程序如下:ORG 0000HAJMP MAINORG 0040HMAIN:CLR P10 ;LED初始化 CLR P11 MOV DPTR,#LEDDATA;将LED数码所在的地址送DPTR SETB P17;0809时序初始化设置 MOV P2,#0FFH SETB P14 SETB P15 LOOP2: CLR P14 ;启动0809 JNB P17,$;等待0809转换完毕 CLR P15 MOV A,P2;读取数据 MOV 20H,A;将读取的数据进行拆分,已便进行显示 ANL A,#0FHMOVC A,A+DPTR ;LED显示读出的数据MOV P0,ASETB P11ACALL DELAYCLR P11MOV A,20HSWAP AANL A,#0FHMOVC A,A+DPTRMOV P0,ASETB P10ACALL DELAYCLR P10SETB P14 ;为下一次AD采样做好时序准备SETB P15AJMP LOOP2 ;延时子程序DELAY:MOV R7,#0FHLOOP1:MOV R6,#0EFHDJNZ R6,$DJNZ R7,LOOP1RET SJMP $;数码管数码LEDDATA:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,083H,0C6H,0A1H,86H,8EH; 0 1 2 3 4 5 6 7 8 9 A B C D E FEND2在Keil uVision3中建立工程,并输入编制好的程序源代码,然后保存为*.asm文件;对该工程进行编译连接工作。3将DRZ-51V20开发板与计算机连接,并将编译完成后生成的*.hex文件下载到DRZ-51V20开发板。4实验现象实验现象如图36所示:图3 输入电压等于0V(min)图4 输入电压等于5V(max)图5 输入电压等于2.5V图6 输入电压等于4V从上面各个图可以看出,ADC0809转换的结果与输入的电压成一定的线性比例关系。六、思考题1. 按A/D实验连线图,增加当前A/D转换结果送L1L8LED小灯显示的程序。答:根据实验原理图和所写的程序,可以采用P3口作为小灯的控制端口,则在所写的程序中将读到的转换数据拆分送七段数码管显示前,增加以下代码即可实现所要求的功能:MOV P3,A;将转换后的数据送L1L7LED小灯显示实验七 多分支程序一、实验目的1. 了解程序的多分支结构2. 了解多分支结构程序的编程方法。二、实验项目1. 在多分支结构的程序中,能够按调用号执行相应的功能。2. 编写程序,根据送入的数据转移运行。3. 在20H中分次送入00、01、02、03,每次运行程序后,观察数码管上数字循环情况。三、实验设备与仪器1DRZ-51V20开发板 1台2PC机 1台四、实验原理多分支结构是程序中常见的结构,给出调用号来调用子程序,一般用查表方法,查到子程序的地址,转到相应子程序,完成指定操作。根据调用号查表得到跳转地址结束跳转到相应程序段调用返回设置调用号图1 程序流程图程序流程图如图1所示:五、实验步骤1根据实验内容编写实验程序如下:ORG 0000HAJMP MAINORG 0040HMAIN:MOV R3,#03;预置的入口参数,根据这个入口参数显示相应的内容MOV A,R3RL A;AJMP为2字节指令,所以A需要乘2MOV DPTR,#JMPTABJMP A+DPTR;散转指令,转向相应的入口地址JMPTAB: AJMP ROUT00 AJMP ROUT01AJMP ROUT02AJMP ROUT03 SJMP $;根据相应入口地址显示相应的数码ROUT00:RR A ACALL LED SJMP $ROUT01:RR A ACALL LED SJMP $ROUT02:RR A ACALL LED SJMP $ROUT03:RR A ACALL LED SJMP $LED:MOV DPTR,#DATAS;七段数码管显示子程序MOVC A,A+DPTRMOV P0,ACLR P20RETDATAS: ;数码管显示数码DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH END2在Keil uVision3中建立工程,并输入编制好的程序源代码,然后保存为*.asm文件;对该工程进行编译连接工作。3将DRZ-51V20开发板与计算机连接,并将编译完成后生成的*.hex文件下载到开发板。4实验现象当设置R3为0时,数码管显示0;当设置R3为1时,数码管显示1;当设置R3为2时,数码管显示2;当设置R3为3时,数码管显示3;可见,程序根据相应的入口参数,散转到相应的子程序去执行。六、思考题1如果DPTR=0FFDCH,R0=0DCH;MOVX R0, A这种写外部数据存储器的方式较MOVX DPTR, A在什么情况下可获得一样的效果?相对后一种方式而言,前一种方式有什么优点?答:当51单片机只扩展256字节的外部RAM的时候,两条指令的可以获得一样的效果,相对于后一种方式,第一种方式的优点是:1)占用更少的I/O口,后一种方式即使在访问256字节的外部RAM时,P2口也没有办法作为通用I/O口;2)第一种的执行效率更高,第一种是1个机器周期指令,第二中是两周期指令。实验八 D/A转换实验一、实验目的1. 了解D/A转换与单片机的接口方法。2. 了解D/A转换芯片0832的性能及编程方法。3. 通过实验学习单片机系统中扩展D/A转换芯片的基本方法。二、实验项目1. 根据要求在单片机实验箱上接线。2. 使用上位机(PC)按要求编制实验程序:利用0832 D/A数模转换输出一个锯齿波。3. 调试实验程序,观察输出结果。三、实验设备与仪器1DVCC 1台2PC机 1台四、实验原理D/A 转换器是一种能把数字量转换成模拟量的电子器件。因此通过编程,我们可以使D/A 转换器输出各类满足应用需要的模拟信号。本实验采用DAC0832产生一个方波输出,其硬件电路原理图如图1所示:图1 实验原理图程序流程图如图2所示:图2 程序流程图五、实验步骤1根据实验内容编写实验程序如下:ORG 0000HAJMP MAINORG 0040;0832工作于直通方式MAIN:MOV A,#00H;锯齿波的上升沿LOOP1:MOV P2,AINC ACJNE A,#0FFH,LOOP1LOOP2:MOV P2,A;锯齿波的下降沿DEC ACJNE A,#00H,LOOP2AJMP MAINEND2在Keil uVision3中建立工程,并输入编制好的程序源代码,然后保存为*.asm文件;对该工程进行编译连接工作。3将DVCC开发板
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽保安员考试题库及答案
- 标准化合同范本与审批流程工具
- 农贸市场管理软件采购合同
- 家庭农场综合经营承包合同
- 社区初级考试题库及答案
- 采购合同审查与验收标准流程表
- 钣金工技能考试题及答案
- 天津高铁安检考试题及答案
- 乌鲁木齐物理课标考试真题及答案
- 诏安中考模拟考试题目及答案
- 机关档案管理工作培训课件
- 生物武器伤害及其防护课件
- 简约大气商业计划书项目融资模板
- 内经选读上古天真论课件
- GJB9001C标准内审员考试自测题试题含答案
- 一、长方体和正方体表面涂色的
- GB∕T 36667-2018 船舶和海上技术 船舶系泊和拖带设备舷内带缆桩(钢板型)
- 猪肉采购服务方案(完整版)
- kinetix6200和6500模块化多轴伺服驱动器用户手册
- 【图文】GB8624-2012建筑材料及制品燃烧性能分级(精)
- “日本经济”课程教学大纲
评论
0/150
提交评论