单片机实验指导书xx09.doc_第1页
单片机实验指导书xx09.doc_第2页
单片机实验指导书xx09.doc_第3页
单片机实验指导书xx09.doc_第4页
单片机实验指导书xx09.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机实验指导书xx09 单片机技术实验指导书河南农业大学机电工程学院电气工程系xx年9月第一部分、开发环境简介双击桌面上的WAVE6000图标进入本开发环境,其界面及主要功能如图1-1中所注。 图1-1WAVE界面1仿真器设置窗口如图1-2所示,在实验开始时要先根据需要设置好仿真器类型、仿真头类型以及CPU类型,并注意是否“使用伟福软件模拟器”,若使用硬件仿真,请注意去掉“使用伟福软件模拟器”前的选择。 图1-2仿真器设置窗口2文件窗口如图1-3,可在此窗口下进行包括新建、打开、保存等文件操作。 图1-3文件窗口3编译文件窗口如图1-4,在此窗口下可将源文件编译成目标文件。 图1-4编译文件窗口4执行窗口如图1-5,在此窗口下,可用全速、跟踪、断点等各种方式运行程序图1-5执行窗口5窗口窗口如图1-6-1,在此窗口下,可以观察各种窗口信息,其中最常用到的是CPU窗口和数据窗口。 图2-6-1窗口aCPU窗口通过CPU窗口可以看到你编译正确的机器码及反汇编程序,可以让你更清楚地了解程序执行过程。 CPU窗口中还有SFR窗口和位窗口,让你了解程序执行过程中寄存器内容的变化。 图1-6-2CPU窗口b数据窗口对51系列CPU,数据窗口有DATA内部数据窗口;CODE程序数据窗口;XDATA外部数据窗口;PDATA外部数据窗口(页方式)图1-6-3数据窗口图1-6-4DATA(内部数据窗口)图1-6-5CODE(程序数据窗口)图1-6-6XDATA(外部数据窗口)图1-6-7PDATA(页方式外部数据窗口)第二部分MCS51系列单片机软件实验实验一存储器块清零 一、实验目的1.掌握存储器读写方法。 2.了解存储器的块操作方法。 二、实验内容1.指定内部RAM中某块的起始地址和长度,要求能将其内容清零。 2.指定外部RAM中某块的起始地址和长度,要求能将其内容清零。 3.指定外部RAM中某块的起始地址和长度,要求能将其内容置为某固定值(如0FFH)。 三、实验说明通过本实验,学生可以了解单片机的存储器结构及读写存储器的方法,同时也可以了解单片机编程、调试方法。 四、实验仪器和设备PC机、WAVE软件。 五、参考程序框图设置块起始地址设置块长度否是存储器块清零参考程序框图Block equ4000h mov dptr,#Block;起始地址mov r0,#0ff;清256字节clr aLoop:movxdptr,a incdptr;指向下一个地址djnz r0,Loop;记数减一ljmp$end实验二二进制到BCD转换 一、实验目的1掌握简单的数值转换算法。 2基本了解数值的各种表达方法。 二、实验内容3将给定的一个单字节二进制数,转换成非压缩的二十进制(BCD)码。 4将给定的一个单字节二进制数,转换成压缩的二十进制(BCD)码。 三、实验说明计算机中的数值有各种表达方式,这是计算机的基础。 掌握各种数制之间的转换是一种基本功。 有兴趣的同学可以试试将BCD转换成二进制码。 四、实验仪器和设备PC机、WAVE软件。 五、参考程序框图给出要转换的二进制数将该数除以100保存百位数单字节二进制数转换成非压缩BCD码框图例将累加器A中0FFH范围内的二进制数转换为非压缩的BCD数(0255),并分别保存于40H、41H和42H单元(低位在前)。 非压缩的BCD码一个字节放一位BCD码压缩的BCD码一个字节放两个BCD码例(A)0FEH255000000100000010100000101应用常用于需要数码显示的场合。 分离方法将A中的内容分别除以100和10。 45=0100,010145=0000,0100,0000,0101BCD MOV B,#100DIV AB;A中为百位数MOV42H,A;保存百位MOV A,B MOV B,#10DIV AB;A中为十位,B中为个位MOV41H,A;保存十位MOV40H,B;保存个位RET软件实验三存储块移动 一、实验目的1了解内存的移动方法。 2加深对存储器读写的认识。 二、实验内容将指定源地址和长度的存储块移到指定目标位置。 三、实验说明块移动是计算机常用操作之一,多用于大量的数据复制和图象操作。 本程序是给出起始地址,用地址加一方法移动块,请思考给出块结束地址,用地址减一方法移动块的算法。 另外,若源块地址和目标块地址有重叠,该如何避免? 四、实验仪器和设备PC机、WAVE软件。 五、参考程序框图设置块的源地址设置块的目标地址设置移动长度从源地址取数保存到目标地址中源地址加1目标地址加1否是否移动完?是是结束存储块移动参考程序框图移动3000H-4000H,256字节ORG0000mov r0,#30h mov r1,#00h mov r2,#40h mov r3,#00h mov r7,#0Loop:mov dph,r0mov dpl,r1movx a,dptr movdph,r2mov dpl,r3movxdptr,a cjne r1,#0ffh,Goon1inc r0Goon1:inc r1cjner3,#0ffh,Goon2inc r2Goon2:inc r3djnz r7,Loop Sjmp$end软件实验四多分支程序 一、实验目的1了解程序的多分支结构。 2了解多分支结构程序的编程方法。 二、实验内容在多分支结构的程序中,能够按调用号执行相应的功能。 三、实验说明多分支结构是程序中常见的结构,若给出调用号来调用子程序,一般用查表方法,查到子程序的地址,转到相应子程序,完成指定操作。 四、实验仪器和设备PC机、WAVE软件。 五、参考程序框图设置调用号根据调用号查表得到跳转地址多分支参考程序框图软件实验五数据排序 一、实验目的1了解数据排序的简单算法。 2了解数列的有序和无序概念。 二、实验内容给出一组随机数,将此组数据排序,使之成为有序数列。 三、实验说明有序的数列更有利于查找。 本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。 再进行下一轮比较,找出第二大数据,直到全部数据有序。 四、实验仪器和设备PC机、WAVE软件。 五、参考程序框图设置数据区地址设置数据区长度清除交换标志从当前地址取数A否是否是否是数据排序参考程序框图第三部分MCS51系列单片机硬件实验实验一P1口输入、输出实验 一、实验目的1.学习Pl口的使用方法。 2.学习延时子程序的编写和使用。 二、实验内容 1、P1口做输出口,接八只发光二极管(其输入端为高电平时发光二极管点亮),编写程序,使发光二极管循环点亮。 2、P1 0、P11作输入口接两个拨动开关S 0、S1;P12,P13作输出口,接两个发光二极管,编写程序读取开关状态,将此状态在发光二极管上显示出来。 编程时应注意P1 0、P11作为输入口时应先置1,才能正确读入值。 三、实验电路连线P10-LED0P10-S0P11-LED1P11-S1P12-LED2P12-LED2P13-LED3P13-LED3P14-LED4P15-LED5P16-LED6P17-LED7实验1P1口循环点灯实验2P1口输入输出 四、实验说明 1、P1口是准双向口。 它作为输出口时与一般的双向口使用方法相同。 由准双向口结构可知当P1口用作输入口时必须先对它置“1”。 若不先对它置“1”,读入的数据是不正确的。 2、延时子程序的延时计算问题对于程序DelayMOV R7,#200查指令表可知执行MOV指令需DEL1MOV R6,#123用1个机器周期,DJNZ指令需用2NOP个机器周期,在12MHz晶振时,一个DEL2DJNZ R6,DEL2机器周期时间长度为1s,所以该段DJNZ R7,DEL1程序执行时间为RET1+(1+1+2*123+2)*200+2*1s 五、实验仪器和设备50ms PC机、WAVE软件、E2000/S仿真器+POD8X5X仿真头、MULT1A用户板、实验板、开关电源等。 开始开始 六、参考程序框图P1. 0、P1.1置1设置初始值读入P1.0口值数据输出将读入的值输出到P1.2左移一位读入P1.0口值P1口循环延时P1口输入点灯框图输出框图将读入的值输出到P1.3实验二(I)交通灯控制(软件延时法) 一、实验目的1.学习数据输出程序的设计方法。 2.学习模拟交通灯控制的方法。 3.进一步了解软件延时方法。 二、实验内容用CPU的P1口输出控制信号,控制六个LED灯(红,绿,黄),模拟交通灯管理。 三、实验电路连接P10-LED0LED 0、LED 1、LED2分别P11-LED1表示南北方向红、黄、绿灯P12-LED2P13-LED3LED 3、LED 4、LED5分别P14-LED4表示东西方向红、黄、绿灯P15-LED5 四、实验说明l.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。 假设一个十字路口为东西南北走向。 初始为状态0。 状态0东西红灯,南北红灯;然后转状态1南北绿灯通车,东西红灯;过一段时间转状态2南北绿灯闪几次转黄灯亮,延时几秒,东西仍然红灯;再转状态3东西绿灯通车,南北红灯;过一段时间转状态4东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯;最后循环至状态1。 2.各用一组红、黄、绿色LED分别表示南北方向和东西方向红绿灯。 3.延时程序参考硬件实验一中的例子,具体时间长短由同学自己确定。 五、实验仪器和设备PC机、WAVE软件、E2000/S仿真器+POD8X5X仿真头、MULT1A用户板、实验板、开关电源等。 六、参考程序框图开始初始状态东西南北都是红灯,延时一会儿状态1南北绿灯,东西红灯,延时一会儿状态2南北绿灯闪转黄灯亮,东西红灯,延时一会儿状态3南北红灯,东西绿灯,延时一会儿状态4南北红灯,东西绿灯闪转亮黄灯,延时一会儿交通灯控制参考程序框图*硬件实验二(II)交通灯控制(定时器延时法) 一、实验目的1.进一步理解单片机内部定时器/计数器的工作原理和使用方法。 2.学习模拟交通灯控制的方法。 3.学习数据输出程序的设计方法。 4.学习中断处理程序的编程方法。 二、实验内容用CPU的P1口输出控制信号,控制六个LED灯(红,绿,黄),模拟交通灯管理。 LED 0、LED 1、LED2分别表示南北方向红、黄、绿灯 三、实验电路连接P10-LED0P11-LED1P12-LED2LED 3、LED 4、LED5分别P13-LED3表示东西方向红、黄、绿灯P14-LED4P15-LED5 四、实验说明l.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。 假设一个十字路口为东西南北走向。 初始为状态0。 状态0东西红灯,南北红灯;然后转入状态1南北绿灯通车,东西红灯;过一段时间转入状态2南北绿灯闪几次转黄灯亮,延时几秒,东西仍然红;再转入状态3东西绿灯通车,南北红灯;过一段时间转入状态4东西绿灯闪几次转黄灯亮,延时几秒,南北仍然红灯;最后循环至状态1。 2.各用一组红、黄、绿色LED分别表示南北方向和东西方向。 3.由定时器来产生通车延时时间,时间长短1秒以上(由同学自己确定)。 提示内部计数器用作定时器时,是对机器周期计数。 每个机器周期的长度是12个振荡器周期。 因为实验系统的晶振是12MHZ,本程序定时器工作于方式1(16位方式)时,最大定时时间为216*1s=65536s=65.536ms所以需要配合软件记数。 如要延时2秒,则需要T0中断32次,所用时间为65536*32=2097120s2s因此在T0中断处理程序中,要判断中断次数是否到32次,若不到32次,则只使中断次数加1,然后返回,若到了32次,定时2秒时间到。 4.用软件延时方法产生“闪”延时时间(参考硬件实验一)。 五、实验仪器和设备PC机、WAVE软件、E2000/S仿真器+POD8X5X仿真头、MULT1A用户板、实验板、开关电源等。 六、参考程序框图(见下页)开始T0中断入口置T0工作方式1,定时器保护现场并重新设置T0时间常数设置T0时间常数0000H秒计数值R6减1否是否到2秒?是设置状态记数初值B=0重新设置秒计数值R6=32中断允许,定时开始状态值B加1设置秒计数值R6=32(2秒)通过P1口送初始状态(东西南北都是红灯)动态停机等待中断否是是否状态1?南北绿灯,东西红灯是否状态2?是否南北绿灯闪转黄主程序框图灯亮,东西红灯是否状态3?是否南北红灯,东西绿灯进入状态4,南北红灯,东西绿灯闪转黄灯亮重设状态记数初值R2=0恢复现场中断返回中断处理程序框图注本试验可安排在中断实验和定时器实验之后做。 SETB LED_R1;东西红灯亮CLR LED_G2CLR LED_R2SETB LED_Y2;南北黄灯亮RET DISPLAY:;数码显示MOV A,SECOND1;东西秒寄存器MOVB,#10;16进制数拆成两个10进制数DIV AB MOV DBUF+3,A MOV A,B MOV DBUF+2,A MOV A,SECOND2;南北秒寄存器MOVB,#10;16进制数拆成两个10进制数DIV ABMOV DBUF+1,A MOV A,BMOV DBUF,A MOV R0,#DBUF MOV R1,#TEMP MOV R2,#4DP10:MOV DPTR,#LEDMAP MOV A,R0MOVC A,A+DPTR MOVR1,A INC R0INC R1DJNZ R2,DP10MOV R0,#TEMP MOV R1,#4DP12:MOV R2,#8MOV A,R0DP13:RLC A MOV P3.0,C CLRP3.1SETB P3.1DJNZ R2,DP13INC R0DJNZ R1,DP12RET LEDMAP:DB3FH,6,5BH,4FH,66H,6DH;0,1,2,3,4,5DB7DH,7,7FH,6FH,77H,7CH;6,7,8,9,A,B DB58H,5EH,7BH,71H,0,40H;C,D,E,F,,-END硬件实验三计数器实验 一、实验目的学习51单片机内部定时计数器使用方法。 二、实验内容51单片机内部定时计数器T0,按计数器模式工作于方式1,对P34(T0)引脚进行计数。 将其数值按二进制数在P1口驱动LED灯上显示出来。 三、实验电路连线P10-LED0P11-LED1P12-LED2P13-LED3P14-LED4P15-LED5P16-LED6P17-LED7-T0(P34)单次脉冲 四、实验说明本实验中内部计数器起计数器的作用。 外部事件计数脉冲由T0(P34)脚引入定时器T0。 单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变,这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。 同时这就决定了输入波形的频率不能超过机器周期频率。 五、实验仪器和设备PC机、WAVE软件、E2000/S仿真器+POD8X5X仿真头、MULT1A用户板、实验板、开关电源等。 六、参考程序框图开始设置T0工作方式(方式 1、计数模式)开始计数计数,输出计数值计数器实验参考程序框图ORG0mov TMOD,#00000101b;方式1,记数器mov TH0,#0mov TL0,#0setb TR0;开始记数Loop:mov P1,TL0CALL DELAY;将记数结果送P1口ljmp LoopDELAY:MOV R4,#04H AA:MOV R5,#0FFH AA1:MOV R6,#0FFH AA2:NOP DJNZ R6,AA2DJNZ R5,AA1DJNZ R4,AA RETend硬件实验四外部中断实验 一、实验目的1.学习外部中断技术的基本使用方法。 2.学习中断处理程序的编程方法。 二、实验内容用单次脉冲申请中断,在中断处理程序中对信号进行反转输出。 三、实验电路连线P1.0-LED0-INT0单次脉冲 四、实验说明编写中断处理程序需要注意的问题是1保护进入中断时的状态,并在退出中断之前恢复进入时的状态。 2必须在中断处理程序中设定是否允许中断重入,即设置EX0位。 本例中使用了INT0中断,一般进入中断处理程序时应保护PSW,ACC以及中断处理程序使用但非其专用的寄存器(保护现场)。 本例的INT0中断处理程序保护了PSW,ACC等三个寄存器并且在退出前恢复了这三个寄存器(恢复现场)。 另外中断处理程序中涉及到关键数据的设置时应关中断,即设置时不允许中断重入。 本例中没有涉及这种情况。 3INT0端接单次脉冲发生器。 P10接LED灯,以查看信号反转 五、实验仪器和设备PC机、WAVE软件、E2000/S仿真器+POD8X5X仿真头、MULT1A用户板、实验板、开关电源等。 六、参考程序框图INT0中断入口开始保护现场设置P1.0初始状态P1.0状态取反设置有关中断控制寄存器开外中断INT0恢复现场死循环等待中断中断返回主程序框图INT0中断处理程序框图;外部中断实验LED equP1.0LEDBuf equ0org0ljmp Startorg3Interrupt0:push PSW;保护现场cpl LEDBuf;取反LED movc,LEDBuf movLED,c pop PSW;恢复现场reti Start:clr LEDBufclr LED mov TCON,#01h;外部中断0下降沿触发mov IE,#81h;打开外部中断允许位(EX0)及总中断允许位(EA)OK:ljmp OKend硬件实验五DA转换实验 一、实验目的1.了解D/A转换的基本原理。 2.了解D/A转换芯片0832的性能及编程方法。 3.了解单片机系统中扩展D/A转换的基本方法。 二、实验内容1.利用DAC0832将任意1字节数字量转换成电压模拟量,用电压表测量输出电压。 2.编制程序产生锯齿波、三角波,用示波器观看。 三、实验电路连线(实验板上已经连好)用电压表测量输出电压或用示波器探头接触V o1或V o2,观察显示波形。 DAC0832R fb373I out1-V O1P0口DI0DI7I out2+(05V)(D0D7)FF90H CLKCS ILE+5VD1373WR1XFER FF91H CLKWR2 四、实验说明 1、D/A转换是把数字量转换成模拟量的变换,实验板上D/A电路输出的是模拟电压信号。 本实验系统具有2路D/A(输出为V o 1、V o2),采用单缓冲方式,数据口地址FF90H,控制口地址FF91H,其中FF91H的D1位输出正跳变信号控制CH0路D/A,FF91H的D2位输出正跳变信号控制CH1路D/A,实现转换的过程是先将要转换的数字量写入FF90H口(用MOVX指令),然后将正跳变控制信号经FF91H口送出(用MOVX指令),使0832缓冲器打开,开始D/A转换。 任意1字节数(如设为7FH)D/A转换的参考程序如下MOV DPTR,#0FF90H MOV A,#7FH;待转换的数字量送A MOVXDPTR,A;然后送FF90H口MOV DPTR,#0FF91H MOV A,#0FDH;控制位D1=0送A MOVXDPTR,A;然后送FF91H口MOV A,#0FFH;控制位D1=1送A MOVXDPTR,A;然后送FF91H口(即D1位得到一个正跳变) 2、要产生锯齿波、三角波,比较简单的方法是表格法先产生这二个波形的数据表格,然后依次查表得到波形中一点的数字量,送D/A转换,得到模拟量的电压信号,再送示波器显示。 这种表格法对输出较复杂的波形(如正弦波或其他任意波形)是非常有用的。 产生锯齿波和三角波的表格只需由数字量的增减来控制,同时要注意三角波要分段来产生。 也可用教材中的编程法用一段程序来产生锯齿波或三角波, 3、DA转换取值范围为一个周期,在一个周期数据点越多,精度越高些。 本例采用的数据点为256点周期,即最小数字量为0,最大为255(FFH)。 4、8位DA转换器的输入数据N与输出电压V o1的关系为V o1=-V ref*N256(V ref为参考电压,V ref=-5V) 五、实验仪器和设备PC机、WAVE软件、E2000/S仿真器+POD8X5X仿真头、MULT1A用户板、实验板、开关电源等。 六、参考程序框图(表格法)开始置循环计数初值表格首地址送DPTR查表得到波形数据送D/A转换修改表指针、修改计数值否是表格法产生锯齿波、三角波参考程序框图ORG AJMPORG START:MOV LP:MOV MOVX LCALL MOVMOVXLCALLSJMP DELAY:MOVD1:NOP NOP NOP NOPNOP DJNZ RET END0000H START0100H DPTR,#0FEFFH A,#0FFHDPTR,A DELAYA,#00HDPTR,A DELAYLP R3,#11R3,D1;置DAC0832的地址;设定高电平;启动D/A转换,输出高电平;延时显示高电平;设定低电平;启动D/A转换,输出低电平;延时显示低电平;连续输出方波;延时子程序硬件实验六AD转换实验 一、实验目的1.掌握AD转换与单片机的接口方法。 2.了解AD芯片ADC0809转换性能及编程。 3.通过实验了解单片机如何进行数据采集。 二、实验内容利用实验板上的ADC0809做AD转换器,实验板上的电位器提供模拟量输入,编制程序,将模拟量转换成二进制数字量,并用发光二极管显示。 三、实验电路连线IN0P0口D0D7IN1(P0.0P0.7)IN2EOC IN3FF91H IN4IN5D0D2373A0A IN6A1B IN7A2C通道地址FF80HFF87H 四、实验说明1.AD转换器大致有三类一是双积分AD转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近AD转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。 2.本实验用的ADC0809属第二类,是八位AD转换器。 每采集一次一般需100s,AD转换结束后会自动产生EOC信号。 本程序是用查询方式读入AD转换结果。 实验系统具有8路A/D通道(模拟量输入端为IN 0、IN1IN7),地址分别为FF80FF87H,状态口地址FF91H,FF91H的D0位输入的是EOC信号,D0=0表示未转换完,D0=1表示转换完毕,可以读入转换好的数据了。 实现转换的过程是先向某一路通道写入任意数从而启动转换,然后从FF91H读入EOC状态进行判断,若转换完成,则读入数据即可。 A/D转换部分的参考程序如下MOV DPTR,#0FF80H;选中通道0(D2D1D0=000)MOVXDPTR,A;启动转换MOV DPTR,#0FF91H TEST:MOVX A,DPTR;读入状态JNB ACC.0,TEST;判断EOC状态,EOC=0继续查询MOV DPTR,#0FF80H;EOC=1,转换完毕MOVX A,DPTR;读入数据3转换得到的二进制数字量通过P1口送到发光二极管显示。 五、实验仪器和设备PC机、WAVE软件、E2000/S仿真器+POD8X5X仿真头、MULT1A用户板、实验板、开关电源等。 六、参考程序框图开始启动A/D转换读入状态信息否A/D转换完毕?是数据输出显示A/D转换参考程序框图DBUF0EQU30H TEMPEQU40H ORG0000H START:MOV R0,#DBUF0MOVR0,#0AH INC R0MOVR0,#0DH INC R0MOVR0,#11H INC R0MOV DPTR,#0FEF3H;A/D MOVA,#0MOVXDPTR,A WAIT:JNB P3.3,WAIT MOVXA,DPTR;读入结果MOV P1,A MOVB,A SWAPA ANLA,#0FH XCHA,R0INC R0MOVA,B ANLA,#0FH XCHA,R0ACALL DISP1acall delayAJMP STARTDISP1:MOV R0,#DBUF0MOV R1,#TEMP MOV R2,#5DP10:MOV DPTR,#SEGTAB MOVA,R0MOVC A,A+DPTR MOVR1,A INCR0INCR1DJNZ R2,DP10MOV R0,#TEMP MOVR1,#5DP12:MOVR2,#8MOVA,R0DP13:RLC A MOV0B0H,C CLR0B1H SETB0B1H DJNZ R2,DP13INCR0DJNZR1,DP12RET SEGTAB:DB3FH,6,5BH,4FH,66H,6DH;0,1,2,3,4,5DB7DH,7,7FH,6FH,77H,7CH;6,7,8,9,A,B DB58H,5EH,79H,71H,0,00H;C,D,E,F,-DELAY:MOVR4,#008H AA1:MOVR5,#0FFH AA:NOPNOPDJNZR5,AA DJNZR4,AA1RET END硬件实验七外部中断实验(急救车与交通灯) 一、实验目的1.学习外部中断技术的基本使用方法。 2.学习中断处理程序的编程方法。 二、实验内容在硬件实验二的基础上增加允许急救车优先通过的要求,有急救车到达时,两个方向交通信号灯全红,以便让急救车通过。 设急救车通过路口时间为10秒,急救车通过后,交通恢复正常,本实验用单次脉冲申请中断,表示有急救车通过。 三、实验电路及连线P10-LED0LED 0、LED 1、LED2分别P11-LED1表示南北方向红、黄、绿灯P12-LED2P13-LED3LED 3、LED 4、LED5分别P14-LED4表示东西方向红、黄、绿灯P15-LED5INT0-单次脉冲 四、实验说实明1编制中断处理程序要注意的问题是保护进入中断时的状态(保护现场),并在退出中断之前恢复进入时的状态(恢复现场)。 2本例中使用了INT0中断,一般中断处理程序进入时应保护PSW,ACC以及中断处理程序使用但非其专用的寄存器。 本例的INT0程序中应保护PSW,ACC等,以便保护中断前红绿灯的状态(保护现场),并且在退出前恢复原来红绿灯状态(恢复现场)。 INT0端接单次脉冲发生器。 3本实验中交通信号灯LED0LED5与P1.0P1.5连接。 4有关本实验的其他问题请参考硬件实验二。 五、实验仪器和设备PC机、WAVE软件、E2000/S仿真器+POD8X5X仿真头、MULT1A用户板、实验板、开关电源等。 六、参考程序框图开始开外中断INT0状态1南北绿灯,东西红灯,延时一会儿状态2南北绿灯闪转黄灯亮,东西红灯,延时一会儿状态3南北红灯,东西绿灯,延时一会儿状态4南北红灯,东西绿灯闪转黄灯亮,延时一会儿主程序框图;外部中断实验LED equP1.0LEDBuf equ0org0ljmp Startorg3Interrupt0:push PSW;保护现场cpl LEDBuf;取反LEDmovc,LEDBuf movLED,c popPSW;恢复现场reti Start:clr LEDBufINT0中断入口保护现场东西南北红灯都亮延时10秒恢复现场中断返回INT0中断处理程序框图clr LEDmov TCON,#01h;外部中断0下降沿触发mov IE,#81h;打开外部中断允许位(EX0)及总中断允许位(EA)OK:ljmp OKend硬件实验八定时器实验2(电子秒表) 一、实验目的1.进一步学习51单片机内部计数器的使用和编程方法。 2.进一步掌握中断处理程序的编程方法。 3.了解键盘显示接口工作原理。 二、实验内容利用定时器定时,使七段数码管输出记时值。 三、实验电路连线本实验连线实验板上已经接好,无需另外接线。 四、实验说明本系统键盘显示接口由8279芯片控制,占用二个端口地址数据口FF88H,命令口FF89H,在使用键盘显示功能时,要先初始化8279。 本实验中要将记时结果送LED显示,这可通过调用下面给出的显示子程序来实现,调用过程是先将各位记时值拆字,分别送到LED0LED7显示缓冲区中去,然后调用显示子程序。 本实验中用定时器T0产生1秒钟基本时间单位,本系统fosc=12MHz,当定时器T0工作在方式1(16位)时,最大定时时间为216*1s=65536s再利用软件记数,当T0中断16次时,所用时间为65536*16=1048576s1s因此在T0中断处理程序中,要判断中断次数是否到16次,若不到16次,则只使中断次数加1,然后返回,若到了16次,则使电子秒表记时值加1(十进制),请参考硬件实验五有关内容。 五、实验仪器和设备PC机、WAVE软件、E2000/S仿真器+POD8X5X仿真头、MULT1A用户板、实验板、开关电源等。 六、参考程序及框图LED0EQU50H;定义显示缓冲区LED1EQU51H LED2EQU52H LED3EQU53H LED4EQU54H LED5EQU55H LED6EQU56H LED7EQU57H ORG0000H LJMPMAIN ORG000BH LJMPINT_T0;转T0中断处理程序ORG0030H MAIN:NOP INIT1:MOV DPTR,#0FF89H;INIT_8279初始化MOVA,#00H;MODE MOVXDPTR,A MOVA,#2AH;CLOCK MOVXDPTR,AMOVTMOD,#01H;T0初始化,方式1MOV TH0,#00H;T0时间常数LOOP:DISP:DISPLAY:DLOOP:DISPD2:INT_T0:LOP3:MOV TL0,#00H MOVTCON,#10H;启动T0MOV IE,#82H;开T0中断MOV70H,#10H;中断次数记数(65536*16=1048576s1s)MOVR0,#LED0CLR AMOVR0,A;显示缓冲区清零INCR0CJNE R0,#LED7+1,LOOP LCALLDISPLAY;调显示子程序,开始显示8个0SJMP DISP;循环调用ORG1000H MOV DPTR,#0FF89H;显示子程序MOVA,#90H;8279写显示缓冲区命令MOVXDPTR,AMOVR0,#8H MOVR1,#LED0MOVA,R1MOV DPTR,#DISPTAB;查表,得到七段字型码MOVC A,A+DPTR;MOVDPTR,#0FF88H;MOVXDPTR,A;显示(送8279数据口)INCR1DJNZR0,DLOOP RETORG2000H PUSHACC;T0中断处理程序开始,保护现场PUSH PSWMOV TH0,#00H;重新赋T0时间常数MOV TL0,#00H MOVPSW,#10H;选中工作寄存器2组DJNZ70H,FAN;中断次数记数未减为0,即未到1秒,转MOVR0,#LED7;到1秒MOV70H,#10H;重新赋中断次数记数MOVA,R0ADD A,#01;电子秒表记时值加1DA A;十进制调整JNB ACC.4,LOP2;处理进位MOVR0,#00H DECR0CJNE R0,#LED0-1,LOP3CLR ALOP2:MOVR0,A FAN:POP PSW;恢复现场POP ACCDISPTAB:RETI DB3FH DB06H DB5BH DB4FH DB66H DB6DH DB7DH DB07H DB7FH DB6FH DB77H DB7CH DB39H DB5EH DB79H DB71H DB00H DB40H DB76H DB73H DB3EH DB67H DB38H DB50H DB80H DB3DH DB5CH DB08H DB04H DB37H DB1CH DB78H DB0FFH DB54H;0七段字型码表;1;2;3;4;5;6;7;8;9;A;B;C;D;E;F;(10H);-(11H);H(12H);P(13H);U(14H);Q(15H);L(16H);r(17H);.(18H);G(19H);o(1AH);_(1BH);i(1CH);N(1DH);u(1EH);t(1FH);All(20H);n(21H)开始8279初始化T0初始化显示缓冲区清0调用显示子程序主程序框图END开始8279写缓冲区命令查七段字型表送显示缓冲区返回显示子程序框图开始保护现场数重赋T0时间常数中断次数记数否减为0?是恢复中断次数记数初值秒数加1,十进制调

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论