资源描述
实验一 数据传送程序 (2学时)一、 实验目的1、掌握汇编语言设计和调试方法。2、掌握DVCC实验系统的操作步骤。 二、 实验内容1、编程实现,把7000H70FFH单元的内容清零。 2、编程实现,把源地址为6000H开始的单元内容,传送到目的地址7000H开始的单元中,传送个数为0FFFH个。三、DVCC实验系统操作说明1、 接通DVCC实验系统电源,在DVCC实验箱上应显示闪动的“P”,否则按Reset键。2、 运行DVCC软件。(程序 DVCC598H实验系统 DVCC实验系统)3、 单击工具栏上“新建”或“打开”按钮,编写源程序。单击“编译”按钮,使其形成可执行文件。4、 单击工具栏上“联接”按钮,同时按下DVCC实验箱上PCDBG键(键盘上最右边第2个),实现PC机和实验箱的联接。联机成功,屏幕上出现:.反汇编窗口、寄存器标示位窗口。5、 在成功联机后,单击工具栏上“调试”按钮,把最终目标文件装载到实验系统RAM区;或者通过单击菜单栏中的“动态调试”,选择“传送(.EXE)文件”来实现。6、 单击工具栏上“运行”或“单步”按钮,运行实验程序。7、 单击工具栏上“窗口”,选择“显示内部数据窗口”或“显示外部数据窗口”可显示数据窗口。鼠标右击数据窗口的数据,可设置数据块新地址;鼠标左键单击数据,可修改数据数值。8、 运行完毕,先按实验箱上的复位按钮Reset键,再按PCDBG键,并且点击屏幕上OK,即可退出运行状态。1、 实验内容 把7000H70FFH单元的内容清零。程序代码: ORG 0000HAJMPSTARTORG70HSTART:MOVP2, #70H;送地址高8位到P2端口MOVR0, #00H;R0=00H,表地址低8位CLR A;将累加器A清0LOOP: MOVX R0, A;将A送入以R0内容为地址的外部RAM.INCR0;R0+1-R0CJNER0,#00H,LOOP;比较条件转移指令,若R0不等于0,则跳转到LOOPAJMP $;暂停END2、 编程实现,将源地址为6000H开始的单元,传送到目的地址7000H开始的单元,传送个数为0FFFH个。程序代码: ORG 0000H AJMP STARTORG 50HSTART: MOV DPTR, #6000HMOVP2, #70HMOVR0,#00HLOOP: MOVX A, DPTR MOVX R0, AINC DPTRINCR0CJNE R0,#00H,LOOP;比较条件转移,若R0不等于0,则程序循环,执行loop. INC P2MOVR1,P2CJNE R1,#80H,LOOP; 若R1不等与80h,则程序循环执行loop. AJMP $ END 实验二 并行口实验(2学时)一、实验目的1、掌握P3口、P1口简单使用。2、学习延时程序的编写和使用。二、实验内容1、编写程序用P1.0输出1kHz和500Hz的音频信号,以驱动扬声器作为报警信号。要求1kHz信号响100ms,500Hz信号响200ms,交替进行。P1.7接一开关,进行控制。当开关合上,报警信号响;当开关断开,报警信号停止。(教材单片机原理、接口及应用嵌入式系统技术基础 P75 例4-3)2、P3口做输入口,P1口做输出口。P3.3外接一脉冲,P1.0P1.7接的8个发光二极管L1L8。编写程序,使P3.3每输入一个脉冲,P1口按16进制加一方式逐次点亮发光二极管。三、实验说明1、P1口是准双向口,它作为输出口时与一般的双向口使用方法相同,由准双向口结构可知:当P1口作为输入口时,必须先对它置高电平,使内部MOS管截止,因内部上拉电阻是20K40K,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。 2、延时程序的延时时间计算 如:延时程序 DELAY : MOV R6, #20 DELAY1: MOV R7, #80 DJNZ R7, $ DJNZ R6, DELAY1 查表可知,MOV Rn,#data指令需要1个机器周期的时间,DJNZ Rn,rel指令需要2个机器周期时间。一个机器周期是由12个时钟周期组成的,所以一个机器周期时间长度为12/6MHz。以上程序段的执行时间为:(80*2+1)*20+20*2+1*12/6MHz四、实验接线图(实验内容二接线图)五、实验内容二参考程序框图ORG 00HBEG:SETB P1.7 JB P1.7, $ MOVR2,#100DV:ACALL D500 ACALL D500 ACALL D500 ACALL D500 CPL P1.0 DJNZ R2,DV MOV R1,#100DD:ACALL D500 ACALL D500 CPL P1.0 DJNZ R1,DD SJMP BEGD500:MOV R7,#125;延时500us(6Mhz) DJNZ R7,$ RETEND实验三 中断实验(2学时)一、实验目的1)掌握中断程序的编程方法。2)进一步掌握P1、P3口的双功能使用方法。二、实验内容正常情况下,仅绿灯亮。有故障发生时,绿灯灭,同时红灯闪烁;故障排除后,拨上总开关,恢复正常,绿灯亮,红灯灭。可由P1.0 控制绿灯的亮灭;P3.3 接外部中断源,模拟故障发生;P1.1 控制红灯的亮灭;P1.2 读取总开头的状态。编写程序实现以上功能。 (P3.3 复用为外部中断1输入,即为INT1。其中断向量地址为0013H,使用下降沿触发中断。)三、实验接线P1.0 接绿灯; P1.1接红灯; P1.2 开关K1; P3.3 接点触开关SP四、实验程序框图主程序: 中断服务程序:ORG0000hAJMPMAIN ;主程序ORG0013H ;中断矢量表AJMPIRPRO ;中断服务程序入口ORG 0050H ;主程序MAIN:CLR P1.1 ;红灯灭 SETB P1.0 ;绿灯亮 SETB IT1 ;设置INT1负边缘触发p206 SETB EX1 ;外部中断1有效 SETB EA;开中断LOOP1:INC A ;观察A的变化 JB P1.0, LOOP1LOOP2:INC A ;观察A的变化 JNB P1.2,LOOP2 SETB P1.0 SJMP LOOP1 ;中断服务程序IRPRO:PUSH PSW PUSH ACC SETB PSW.3 CLR P1.0 ; 灭绿灯LOOP3:MOV R2,#05LOOP4:SETB P1.1 ;亮红灯 ACALL D500 CPL P1.1 ACALL D500 DJNZ R2, LOOP4 JNB P1.2,LOOP3 ;总开关监测 POP ACC POP PSW RETID500:MOV R6,#255DELAY:MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DELAY RETEND实验四 定时/计数实验 (2学时)一、实验目的1、 熟悉8031定时/计数功能。2、 掌握定时/计数初始化编程方法。二、实验内容1、 选择T1工作于模式0定时,在P1.0脚上输出周期为4ms的方波,单片机采用6MHZ晶振。分析:输出周期为4ms的方波,即高低电平的持续时间均为2ms,那么只要使P1.0脚上的电平每隔2ms取反一次,就可得到周期为4ms的方波。 将T1设为定时方式0:GATE=0,C/T=0,M1M0=00;T0不用,可为任意,只要不使其进入方式3(此时,定时器1对外停止计数),一般取0即可。计数初值的计算:单片机系统默认的定时/计数器的工作时钟是晶振经12分频的,即T=12/(6*106),所以计数初值为 X=(213-2ms/T)=213-(2*10-3*6*106)/12=8192-1000=7192=1110000011000B因为是13位计数器,所以X的高8位装入TH1,X的低5位装入TL1的低5位,即TH1=0E0H,TL1=18H。 思考:T1计数结束采用中断工作方式 ,程序应如何编写?2、在P1.7端接一个发光二极管LED,要求利用定时器控制,使LED亮1秒、灭1秒,周而复始,设=6MHZ。(教材单片机原理、接口及应用嵌入式系统技术基础 P97 例5-2)三、实验内容一参考程序框图: ORG 00H;START: MOV TMOD,#00HLOAD: MOV TL0,#18H; MOV TH0,#0E0H; CPL P1.3 ACALL TIMER_DELAY JMP LOADTIMER_DELAY: SETB TR0CHECK: JNB TF0,CHECK CLR TR0 CLR TF0 RET; END实验五 串行口应用实验(2学时)一、实验目的 掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。 二、实验内容1、重复发送同一个数据,观察TXD端输出的波形。将8031串口设为工作方式1,即10位异步收发,发送时钟由计数器控制;计数器T1设为定时工作,工作方式2,即自动重装8位计数器;波特率取1000 bps,不加倍;单片机采用6MHZ晶振。计数初值的计算:TH1=256-(1+0)*fosc/(12*32*BPS) P3.1复用为串行发送端TXD,将其接至示波器,观察输出波形。注意观察8位数据位前后的起始位和停止位。2、自发自收。将代码段中定义的10个数据09,通过串口发送和接收,存放在外部存储器7000H开始的单元中。实验内容一参考程序框图:ORG 00HSTART:MOVSCON,#10H;设置串行口工作在模式0下,接受数据ENABLE:CLRP3.2;使能74LS166,进行并行数据装载(同步置数),NOPNOPNOPNOPNOPNOPNOPSETBP3.2;使能串行输入,由每个时钟脉冲进行串行移位CLRRI;CHECK:JBCRI,DISPLAY;接受完毕8bit二进制(1byte)时,RI=1,跳转到显示DISPLAY段JMPCHECK;如果没有接受完毕,循环等待DISPLAY:MOVA,SBUF;将串行口缓冲区SBUF数据载入ACCMOVP1,A;从P1口输出显示CALLDELAY;调延时子程序JMPSTART;循环DELAY:;延时MOVR3,#20;D1:MOVR4,#20D2:MOVR5,#248DJNZR5,$DJNZR4,D2DJNZR3,D1RETEND实验六 倒计时钟(3学时)一、实验目的1、进一步熟悉MCS-51定时/计数器的使用。2、学会使用实验箱上七段LED码显示。二、实验内容在实验箱的七段LED码上显示倒计时钟。每隔一秒钟,在LED上显示9、8、70。提示:使用T0、T1定时/计数器。T0工作在方式0、定时功能,在P1.0引脚上输出周期为4ms的方波;T1工作在方式2、计数功能,对P1.0引脚上输出的下降沿进行计数,计到250个下降沿时,即相当于定时1秒钟。定时器T1外部计数输入引脚为P3.5。计数器TR1的初值为:X=28-250=6, TH1=TL1=6H七段LED的显示:1字位端口为0FF21H,确定显示的位置。2字形端口为0FF22H,确定所显示的内容,即显示的数据: 表6.1 字形码表数据01234567字形码C0HF9HA4HB0H99H92H82HF8H数据89ABCDEF字形码80H98H88H83HC6HA1H86H8EH3如要在右边第一位显示“2”,程序如下: MOV A, #0A4H MOV DPTR, #0FF22H MOVX DPTR, A MOV DPTR, #0FF21H MOV A, #1 MOVX DPTR, AORG 0000H;中断方式:选择T1工作,方式1AJMPMAINORG000BHAJMP TIMER_0 ;跳到TIMER_1 ORG001BHAJMP TIMER_1ORG0030H ;MAIN: SETBP1.3MOVTMOD,#60HMOVTH0,#0E0HMOVTL0,#18H MOV TH1, #06H MOV TL1,#06HSETBTR0SETBEA;EA=1SETBET0;ET1 SETB TR1 SETB ET1 BB: MOV R0,#9H WAIT: MOV A, R0 MOV DPTR,#TAB MOVC A,A+DPTR MOV DPTR, #0FF22H MOVX DPTR, A MOV DPTR, #0FF21H MOV A, #01H MOVX DPTR, A CJNE R0,#0FFH ,WAIT AJMP BBTIMER_0:CPLP1.3 MOVTH0,#0E0HMOVTL0,#18HSETBTR0;TR1=1RETI TIMER_1: DEC R0 RETI TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98HEND
展开阅读全文