基于单片机设计的频率计_第1页
基于单片机设计的频率计_第2页
基于单片机设计的频率计_第3页
基于单片机设计的频率计_第4页
基于单片机设计的频率计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、实验一 数据传送程序 (2学时)一、 实验目的1、掌握汇编语言设计和调试方法。2、掌握dvcc实验系统的操作步骤。 二、 实验内容1、编程实现,把7000h70ffh单元的内容清零。 2、编程实现,把源地址为6000h开始的单元内容,传送到目的地址7000h开始的单元中,传送个数为0fffh个。三、dvcc实验系统操作说明1、 接通dvcc实验系统电源,在dvcc实验箱上应显示闪动的“p”,否则按reset键。2、 运行dvcc软件。(程序 dvcc598h实验系统 dvcc实验系统)3、 单击工具栏上“新建”或“打开”按钮,编写源程序。单击“编译”按钮,使其形成可执行文件。4、 单击工具栏上

2、“联接”按钮,同时按下dvcc实验箱上pcdbg键(键盘上最右边第2个),实现pc机和实验箱的联接。联机成功,屏幕上出现:.反汇编窗口、寄存器标示位窗口。5、 在成功联机后,单击工具栏上“调试”按钮,把最终目标文件装载到实验系统ram区;或者通过单击菜单栏中的“动态调试”,选择“传送(.exe)文件”来实现。6、 单击工具栏上“运行”或“单步”按钮,运行实验程序。7、 单击工具栏上“窗口”,选择“显示内部数据窗口”或“显示外部数据窗口”可显示数据窗口。鼠标右击数据窗口的数据,可设置数据块新地址;鼠标左键单击数据,可修改数据数值。8、 运行完毕,先按实验箱上的复位按钮reset键,再按pcdbg

3、键,并且点击屏幕上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开始的单元,传送个数为0

4、fffh个。程序代码: 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、编写

5、程序用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口作为输入口时,必须先对它置高

6、电平,使内部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四、

7、实验接线图(实验内容二接线图)五、实验内容二参考程序框图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口的双功能使用

8、方法。二、实验内容正常情况下,仅绿灯亮。有故障发生时,绿灯灭,同时红灯闪烁;故障排除后,拨上总开关,恢复正常,绿灯亮,红灯灭。可由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 ;

9、中断服务程序入口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

10、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脚上

11、的电平每隔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计数结束采用中断工作方

12、式 ,程序应如何编写?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学时)一、实验目的

13、掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。 二、实验内容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开始的单元中。实验内容

14、一参考程序框图: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;调延时子程序jmpst

15、art;循环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外部

16、计数输入引脚为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,

温馨提示

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

评论

0/150

提交评论