公文素材库 首页

单片机课程总结

时间:2019-05-29 21:39:55 网站:公文素材库

单片机课程总结

单片机是单片微型计算机的简称,也就是吧微处理器(CPU)、一定容量的程序存储器(ROM)和数据存储器(RAM)、输入/输出接口(I/O)、时钟及其他一些计算机外围电路通过总线连接在一起并集成在一个芯片上,构成的微型计算机系统。

单片机最明显的优势就是可以嵌入到各种仪器、设备中。单片机技术的发展方向:内部结构,增加各种新功能,提高运算速度,降低了功耗,提高了存储能力,增强了与Internet连接的能力,并在电源电压方面、工艺方面及抗干扰方面有了较大的进步和发展。单片机特点:(1)体积小、使用灵活、成本低、易于产业化。(2)可靠性好,适应温度范围宽。(3)易扩展,控制功能强,I/O接口多,指令系统丰富,易于单片机的逻辑控制功能的实现(4)系统内无监控或系统管理程序。

单片机应用:测控系统、智能仪器仪表、通讯产品、民用产品、军用产品、计算机外部设备。

MCS-51内部结构

1.CPU(运算器、控制器)

2.内部存储器(程序存储器ROM、数据存储器RAM)内部有256个RAM单元,后128个被专用寄存器占用,供用户使用的只有前128个

3.定时/计数器4.终端系统控制器5.并行I/O口6.全双工串行口7.OSC时钟电路P0口三种使用方法

1.作为与外部传送数据的8位数据总线2.作为扩展外部存储器时的低8位地址总线3.一般I/O口,要外接上拉电阻P1口:通常作为普通的I/O口

P2口:第一种用法:可以输出片外存储器的高8位地址(A8-A15);第二种用法:作为普通的I/O口来输入输出数据。

P3口:通常作为普通的I/O口;P3.0-P3.7还可作为特殊功能使用

存储器分类:内部程序存储器(ROM)、内部数据存储器(RAM)、外部程序存储器(ROM)、外部数据存储器(RAM)内部数据存储器分两部分,低128单元数据存储器空间(00H~7FH)、高128单元具有特殊功能专用寄存器存储空间(80H~0FFH)

低128单元分为三个区:

1.用户RAM区:30H~7FH,编程时暂存数据,使用不作任何规定和限制

2.位寻址区:20H~2FH,共16单元,128位,位地址分别为00H~7FH。可作为位寻址区,也可作为字节寻址去3.寄存器组:低32字节00H~1FH被分成四个寄存器组,每组8个寄存器,即R0~R7。常用来存放操作数及中间结果等

高128单元专用寄存器:B寄存器、累加器ACC、程序状态字PSW、定时器2寄存器(52系列独有)、IP寄存器、IE寄存器、SCON寄存器、SBUF寄存器、定时器0和定时器1寄存器、P0~P3端口寄存器、栈指针SP寄存器、数据指针DPTR寄存器

位76543210PSWCYACF0RS1RS0OV-P

CY:进位标志位AC:辅助进位标志位F0:用户标志位RS1:当前寄存器区选择位RS0:当前寄存器区选择位OV:溢出标志位-:保留位P:奇偶标志位I/O接口电路的功能:(1)速度协调;(2)数据所存;(3)三态缓冲;(4)信息转换

8255A是一个40引脚的双列直插式集成电路芯片,共有3个8位口,其中A口和B口是单纯的数据口,供数据I/O使用。而C口则既可以做数据口,又可以做控制口使用,用于实现A口和B口的控制。

单片机通过它与外设相连时,需要先往它的控制寄存器中送入命令字,以设置8255A各端口的工作方式以及是输入还是输出,然后,再往8255A的I/O口读写数据。确定8255A各口及控制寄存器地址的方法:首先看一下要选中8255A需要那根线有效,其次,看一下A1、A0与哪两根线相连:

/CSA1A0=000时,单片机选中的是8255A的A口,其A口地址为FF7CH

/CSA1A0=001时,单片机选中的是8255A的B口,其B口地址为FF7DH

/CSA1A0=010时,单片机选中的是8255A的C口,其C口地址为FF7EH

/CSA1A0=011时,单片机选中的是8255A的控制寄存器,其地址为FF7FH

若让8225A工作在方式0,从A口读取数据送到单片机中;把单片机中的数据通过C口送给外设,则相应程序段:MOVDPTR,#FF7FHMOVA,#90HMOVXA,@DPTRMOVDPTR,#FF7CHMOVXA,@DPTRMOVDPTR,#FF7EHMOVX@DPTR,A

单片机的I/O口扩展

(1)利用单片机的I/O口扩展外部数据存储器、扩展外部程序存储器。P0口可以输出片外存储器的低8位地址(A0-A7),作为与外部传送数据的8位数据线;P2口:可以输出片外存储器的高8位地址(A8-A15)。

(2)如何确定扩展的是数据存储器还是程序存储器:若是单片机的PSEN和扩展芯片的OE相连,则扩展的是程序存储器;若是单片机的RD和扩展芯片的OE相连,则扩展的是数据存储器。

如何确定外部数据存储器、外部程序存储器的容量:就看使用了存储器的几根地址线。假设用了n根地址线,则存储器的容量为:

2nB(3)如何确定扩展的存储芯片的地址范围:

这时,单片机的地址线分成两部分:一部分作为存储芯片的片选线,它们的值一旦确定以后就不再改变;一部分作为存储芯片的地址线,它们的值从全0变为全1。这两部分结合起来就是存储芯片的地址范围。

CPU时序振荡周期P,频率的倒数时钟周期S=2P机器周期=6S=12P

指令周期:执行一条指令需要的时间=1~4个机器周期单片机的工作方式:程序执行方式、复位方式、掉电方式、低功耗工作方式、EPROM编程和校验方式

单片机的中断系统

中断:当中央处理器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作,转而去处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。引进中断之后的优点:

1.分时操作2.实现实时处理3.故障处理中断系统一般功能:1.实现中断及返回2.能实现优先权排队3.能实现中断嵌套

8051单片机共有5个中断源,分别是两个外部中断:外部中断0INT0,由P3.2提供,外部中断1INT1,由P3.3提供

外部中断有两种触发方式,即电平方式和脉冲方式三个内部中断:两个定时中断和一个串行中断。T0溢出中断:由片内定时/计数器0提供T1溢出中断:由片内定时/计数器1提供串行口中断RI/TI:由片内串行口提供与中断控制有关的控制寄存器有四个:TCON----定时控制寄存器IE----中断允许控制寄存器IP----中断优先级控制寄存器SCON----串行口控制寄存器中断响应基本原则:

1.高优先级不能被低优先级中断。2.低优先级可被高优先级中断。

3.任何一种中断,一旦得到响应,不会再被它的同级中

断所中断。

4.两个同一级的中断源同时向CPU发出中断申请,CPU

通过内部硬件查询,按自然优先级确定优先响应哪一个中断要求自然优先顺序

1)外部中断02)定时器03)外部中断14)定时器15)串行口中断

中断响应条件:1.有中断源发出中断请求2.中断总允许位EA=1,即CPU允许所有中断源申请中断3.申请中断的中断源的中断允许位为1,即此中断源可以向CPU申请中断。把外外部中断1设置为边沿触发:SETBIT1

把外外部中断1设置为电平触发:CLRIT1CPU开放中断:SETBEA允许T0中断:SETBET0允许外部中断1:SETBEX1

各个中断源与之对应的入口地址:外部中断00003H定时计数器T0中断000BH外部中断10013H定时计数器T1中断001BH串行口中断0023H

单片机的定时器/计数器

MCS-51单片机内部集成有2个16位的可编程定时/计数器:T0和T1

T0和T1有2种工作模式:定时器模式和计数器模式T0有4种工作方式,T1有3种工作方式

这些由模式控制寄存器TMOD来控制,其中低4位用于控制T0,高4位用于控制T1定时长度计算方法:(以T0为例)t=(

2n-T0初值)×机器周期

串口通信

异步通信方式:帧格式和波特率是两个重要指标帧格式:起始位、数据位、奇偶校验位、停止位

波特率(bandrate)是串口通信中数据传送速率的单位,其意义是每秒传送多少位二进制数串口有四种工作方式:1.方式0串行接口工作方式0为同步移位寄存器方式,多用于I/O口的扩展,波特率固定为fosc/12。发送和接收都是以8位数据为一帧2.方式1在方式1时,串行口被设置为波特率可变的8位异步通信接口。发送/接收1帧数据为10位,其中1位起始位、8位数据位、1位停止位。3.方式2被定义为9位异步通信接口。发送/接收1帧数据为11位,其中1位起始位、8位数据位、1位控制/校验位和1位停止位。4.方式3波特率可变的11位异步通信方式,除了波特率有所区别外,其余同方式2

A/D转换:ADC0809

IN0~IN7:8路模拟通道的输入端。D0~D7:8位数字量输出端。

START:转换启动信号,高电平有效。

ADDA、ADDB、ADDC:模拟通道选择输入端。ALE:地址锁存信号。

EOC:A/D转换结束信号,此信号常被用来作为中断请求信号。

OE:允许输出信号。1、MCS-51单片机引脚信号中,信号名称带上划线的表示该信号或低电平有效

2、MCS-51单片机内部RAM的寄存器区共有256个单元,其地址00H~0FFH,分为4组寄存器,每组8个单元。记作R0~R7。3、MCS-51对片内RAM,片外RAM和片内、外ROM访问时分别用指令__MOV_、_MOVX__、_____来区分。4、若A中的内容为54H,那么,P标志位为___1___。5、内部RAM低128单元划分为哪3个主要部分?说明各部分的使用特点。

1、异步串行数据通信有单工,半双工和全双工共三种数据通路形式。2、MCS51单片机串行口发送/接收中断源的工作过程是:当串行口接收或发送完一帧数据时,将SCON中的A,向CPU申请中断。

A.RI或TI置1B.RI或TI置0C.RI置1或TI置0D.RI置0或TI置1

3、80C51单片机串行口有几种工作方式?由什么寄存器决定?

答:4种工作方式,由串行口控制寄存器SCON种的SM0、SM1设置

SM0、SM1工作方式6、80C51四组工作寄存器区的地址范围分别是00H~07H、08H~0FH、10H~17H和18H~1FH。如果当前要使用1区的话,那么PSW中的RS1和RS0应分别设置为_0_和_0_分析下面各指令源操作数的寻址方式MOVA,30H直接寻址MOVR0,A寄存器寻址MOV@R0,#05H立即寻址MOVA,@R0寄存器间接寻址MOVDPTR,#1000H立即寻址MOVCA,@A+DPTR变址寻址MOVC,2FH位寻址JC3AH相对寻址

按下列要求写出相应的指令、

(1)把寄存器R5的内容送到累加器A中。

(2)把外部RAM1000H单元内容传送到内部RAM30H单元中

(3)清除内部RAM3FH单元的高4位(4)使累加器A的最低位置1(5)清除进位位

(6)使ACC.4和ACC.5置1参考答案:(1)MOVA,R5

(2)MOVDPTR,#1000HMOVCA,@DPTRMOV30H,A(3)ANL3FH,#0FH(4)ANLA,#FEH(5)CLRC

(6)SETBACC.4

SETBACC.51、在定时器工作方式0下,计数器的宽度为13位,如果系统晶振频率为3MHZ,则最大定时时间32768us

2、80C51的中断源有外部中断0T0;外部中断1,T1,串行口中断有2个中断优先级。

3、TMOD中M1、M0的用途是工作方式设置位,C/T=1时为方式计数

4、MCS-51单片机用来开放或禁止中断的控制寄存器是IE

000011102

11

扩展阅读:单片机课程设计总结报告

单片机课程设计

频率计总结报告

姓名:陈艺端学号:0829201*

班级:电气0809

所在组:陈艺端白英杰

电气0809班0829201*陈艺端单片机课程设计频率计总结报告

【实验准备】在实验前,我通过上网、上图书馆查找了一些关于频率计的资料,结合单片机所学的中断和定时器的知识,并对电路板各个元器件、接线等的清楚认识,完成了对电路板仿真图的绘制,以及初步的程序,并实现了初步的仿真效果。【设计内容】

设计一个频率计。【设计要求】

分频段(高频、低频),在10k~20kHz范围做切换。

CPU为AT89S51,利用内部T0、T1的定时计数器或外部INT0中断功能来完成对输入的信号进行频率计数或脉宽计时,计数(计时)的频率结果通过6位七段LED数码管显示出来。数字式频率计原理框图:

【设计方案】一、实验原理:1、测频方式

利用单片机计数器T0和定时器T1中断。定时器T1中断产生闸门时间,在闸门时间Ts内,用计数器记录输入脉冲的个数N,从而计算出被测频率Fx=N/Ts。

第2页共22页

电气0809班0829201*陈艺端单片机课程设计频率计总结报告

2、测周方式

利用单片机外部中断INT0和定时器T1中断。定时器T1中断产生时标信号Ts,用外部中断INT0控制定时器T1的计数,计算出在被测信号的一个周期内定时器T1计得的数N,从而计算出被测频率Fx=NTs。

二、电路结构:

①NE555构成多谐振荡器,产生频率可调的方波信号;

②74HC74里的一个D触发器连成计数器,用来对555产生的方波分频;

③74HC14非门做驱动,防止产生的信号不能驱动单片机的I/O口;

第3页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告

④方波信号连接在单片机的INT0和T0口上。

⑤单片机的P1口做字位,连接74HC245驱动数码管的共阴端;⑥P0口做字形,连接74HC573锁存器和74HC245驱动数码管的a~dp端。

三、测频测周转换的讨论以及试验参数:1、测频方式和测周方式的转换频率

依要求来说在10kHz~20kHz之间做切换。

2、转换频率过程中产生的问题

当被测信号频率与转换频率非常接近,并且抖动时,容易产生两种方式一直跳变的现象,进入死循环,可以利用迟滞比较器的原理进行解决。通常将测频方式和测周方式的转换频率设为程序判断测频还是测周的比较点,但为避免在转换频率附近产生死循环,设置两个比较点,分别为f1和f2,从高频测频方式向低频测周方式变化时,比较点为f1,从低频测周方式向高频测频方式变化时,比较点为f2,使f1电气0809班0829201*陈艺端单片机课程设计频率计总结报告

3、参数设定

根据以上讨论,测频方式的闸门周期要大于1/f1,并且越大测量结果越精确,但还要考虑到闸门周期太大会导致测量得到的脉冲数N过大,影响程序大小。同理,测周方式的时标周期要小于1/f2,并且越小越精确,同样要考虑到程序大小以及程序执行时间。

四、程序流程图⑴测频法:①主程序:

②T0中断子程序:②T1中断子程序:

开始中间变量初始化,定时计数器T0、T1初始化启动T1定时10ms,T0开始计数等待中断

中T0计数器溢出中断断返回,存储T0溢出次数的单继元自增1续计数

第5页共22页

电气0809班0829201*陈艺端单片机课程设计频率计总结报告

显示初始化(显示位数、字位初值、显示缓冲区起始地址)573锁存器使能端置1中断返回,继续定时和重新计数调用显示子程序,显示计数值判断1s定时是否到达停止计数,采集数据计数值由十六进制转化为十进制数查表,存储六个字形定时计数初值重置⑵测周法:①主程序:

开始

中间变量初始化,定时器T1初始化启动T1定时50us等待中断

第6页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告

②T1定时子程序:定时器时间到中断返回,继续定时和重新计数判断INT0口是否为1脉冲计数单元自增1检测到INT0口为0时采集数据计数值由十六进制转化为十进制数查表,存储六个字形定时初值重置五、仿真图

第7页共22页

电气0809班0829201*陈艺端单片机课程设计频率计总结报告

可见,改变电阻值或电容值,即改变NE555输入方波的频率,仿真实现的数码管显示值与用频率计测量的理论值相差不大,基本满足设计要求,但还是存在一定的误差,可以加以改进,增加精确度。

说明:由于软件版本问题,没有可调节的滑动变阻器,于是,我用多选开关来代替,通过开关选择不同的电阻来模拟滑动变阻器滑片的移动。

第8页共22页

电气0809班0829201*陈艺端单片机课程设计频率计总结报告

七、总结

在去实验室前,我经过多番努力,将电路板上的电路用仿真软件画出,并且确保了每一条连线都包含了,芯片的每一个管脚都清楚的认识到是用来干什么的,怎么连接的,仿真时各个点将会出现什么情况。尔后,我又进行了初步的编程,将程序模块化,分为了主程序、中断子程序(测频和测周)、显示子程序、十六进制转化为十进制的子程序、延时子程序等,但在十六进制转化为十进制的子程序的编程过程中,我不是很了解怎么实现这个过程,导致未能完成该子程序的编写。

验收当天,我和我的组员在互相讨论了自己的编程思路后,综合了对方的意见,得到了初步的程序,但是在仿真过程中,还是存在诸多问题,我们合力讨论了很久,但还是有点问题,于是我们和另外一组一起商讨,在测频和测周的转换过程方面讨论了很久,还尝试了用双闸门的方法,来代替测频和测周的转换,但是结果还是不理想,尝试了烧程序看看电路板能否实现,但经过了一天的努力,我们还是未能实现所要的结果。临走前,我们询问老师,老师的意思是我们做得复杂了,想太多了,重心已经偏移了,于是,我们经过一个晚上的修改,初步定型了程序,第二天又到实验室去调试。

调试的时候发现显示出来的总是乱码,后用万用表测数码管,才发现电路板上的数码管接反了,于是我们将数码管重新插了一遍。编程时的值都是理论计算得到的值,调试时发现测得的频率和实际频率总有点差别,原因是忽略了程序中其他语句执行所需要的时间,而且一开始由于为将某些语句在等待中断的时间完成,导致仿真结果是一段时间显示一次,时延较长,细微修改定时器定时,并修改程序结果后,减小了测得值和实际值的差别,显示结果也较稳定。在烧程序的过程中出现了很多的问题,比如,接线的问题,芯片的问题等,我们第一天没能将课设验收完成,但我们不断地检查电路板和我们的程序,以及仿真图,不断地寻找问题所在,最终成功地将设计在电路板上实现出来。

六、实验程序①测频法:

ORG0000H

AJMPSTART

ORG000BH;T0中断入口AJMPT0INT

ORG001BH;T1中断入口AJMPT1INTORG0030HSTART:MOVSP,#70H

第9页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告

MOVIE,#8AH;10001010B,开放T0、T1中断

MOVTMOD,#15H;00010101,T1定时,T0计数,允许T0溢出中断MOVTH1,#0ECH

MOVTL1,#78H;定时10msMOV20H,#100;100*10ms=1s

MOVTH0,#00HMOVTL0,#00H

MOV21H,#0MOV22H,#0

MOV23H,#0;存放采集到的频率

SETBTR1;开始计数SETBTR0WAIT:

AJMPWAIT;等待中断

T0INT:

INC23H;T0计数器溢出则23H单元自增1RETI

T1INT:;定时10ms产生中断MOVR2,#06;显示初始化MOVR4,#0FEH

MOVR1,#60H;显示缓冲区起始地址SETBP3.0

LOOP:MOVA,R4

MOVP1,A;字位MOVA,@R1

MOVP0,A;字形LCALLDELAY

INCR1MOVA,R4

RLA;字位左移MOVR4,A

DJNZR2,LOOP;判断6个数码管是否显示完

DJNZ20H,NEXT1;判断1s定时CLRTR1;停止计数CLRTR0

MOV20H,#100

MOV22H,TH0;1s时间到则采集数据MOV21H,TL0

第10页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告

LCALLDISPLAY

MOVTH0,#00H;计数初值置0MOVTL0,#00H

NEXT1:MOVTH1,#0ECH;继续定时MOVTL1,#78HSETBTR1SETBTR0EXIT:RETI

DISPLAY:

MOVR0,#60H

MOVR1,#06H;对60H-65H单元清零NEXT2:MOV@R0,#0INCR0

DJNZR1,NEXT2

ZHUANHUAN:;进制转换MOVA,23HMOVB,#0AHDIVAB

MOV24H,A;存储第一位商

MOVA,B

MOV30H,22HANL30H,#0F0HADDA,30HSWAPA

MOVB,#0AHDIVAB

MOV25H,A;存储第二位商

MOVA,BSWAPA

ANL22H,#0FHADDA,22HMOVB,#0AHDIVAB

MOV26H,A;存储第三位商

MOVA,B

MOV30H,21HANL30H,#0F0HADDA,30HSWAPA

MOVB,#0AHDIVAB

MOV27H,A;存储第四位商

第11页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告

MOVA,BSWAPA

ANL21H,#0FHADDA,21HMOVB,#0AHDIVAB

MOV28H,A;存储第五位商MOV50H,B;存储十进制数个位

MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB

MOV24H,A

MOVA,BSWAPAADDA,26HMOVB,#0AHDIVAB

MOV25H,A

MOVA,BSWAPAADDA,27HMOVB,#0AHDIVAB

MOV26H,A

MOVA,BSWAPAADDA,28HMOVB,#0AHDIVAB

MOV27H,AMOV51H,B

MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB

MOV24H,A

MOVA,BSWAPAADDA,26HMOVB,#0AH

;存储第一位商;存储第二位商;存储第三位商;存储第四位商;存储十进制数十位;存储第一位商第12页共22页

电气0809班0829201*陈艺端单片机课程设计频率计总结报告

DIVAB

MOV25H,A;存储第二位商

MOVA,BSWAPAADDA,27HMOVB,#0AHDIVAB

MOV26H,A;存储第三位商MOV52H,B;存储十进制数百位

MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB

MOV24H,A;存储第一位商

MOVA,BSWAPAADDA,26HMOVB,#0AHDIVAB

MOV25H,A;存储第二位商MOV53H,B;存储十进制数千位

MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB

MOV54H,B;存储十进制数万位MOV55H,A;存储十进制数十万位

MOVR2,#06MOVR0,#50HMOVR1,#5FHMOVDPTR,#TABNEXT3:MOVA,@R0

MOVCA,@A+DPTR;查表,字形INCR0INCR1

MOV@R1,ADJNZR2,NEXT3RET

TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDB77H,7CH,39H,5EH,79H,71HDELAY:MOV40H,#250LP0:NOP

第13页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告

DJNZ40H,LP0RETEND

②测周法:

ORG0000HLJMPMAINORG0100H

MAIN:MOVDPTR,#0000H

SETBC

MOVP3.4,CMOV23H,#00HF1:MOVC,P3.4

JCF1

F2:MOVC,P3.4

JNCF2

F3:MOV22H,DPH

MOV21H,DPLMOVA,#0FFHCJNEA,22H,JIACJNEA,21H,JIAINC23H

JIA:INCDPTR

MOVC,P3.4JCF3

F4:MOV22H,DPH

MOV21H,DPLMOVA,#0FFHCJNEA,22H,JIA1CJNEA,21H,JIA1INC23H

JIA1:INCDPTR

MOVC,P3.4JNCF4

MOV22H,DPHMOV21H,DPL

ACALLDISPLAY

MOV21H,#0MOV22H,#0MOV23H,#0

LJMPMAIN

DISPLAY:MOVR0,#60H

MOVR1,#06HNEXT2:MOV@R0,#0

INCR0

DJNZR1,NEXT2

第14页;对60H-65H单元清零

共22页

电气0809班0829201*陈艺端单片机课程设计频率计总结报告

ZHUANHUAN:;进制转换MOVA,23HMOVB,#0AHDIVAB

MOV24H,A;存储第一位商

MOVA,B

MOV30H,22HANL30H,#0F0HADDA,30HSWAPA

MOVB,#0AHDIVAB

MOV25H,A;存储第二位商

MOVA,BSWAPA

ANL22H,#0FHADDA,22HMOVB,#0AHDIVAB

MOV26H,A;存储第三位商

MOVA,B

MOV30H,21HANL30H,#0F0HADDA,30HSWAPA

MOVB,#0AHDIVAB

MOV27H,A;存储第四位商

MOVA,BSWAPA

ANL21H,#0FHADDA,21HMOVB,#0AHDIVAB

MOV28H,A;存储第五位商MOV50H,B;存储十进制数个位

MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB

MOV24H,A;存储第一位商MOVA,BSWAPA

第15页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告

ADDA,26HMOVB,#0AHDIVAB

MOV25H,A;存储第二位商

MOVA,BSWAPAADDA,27HMOVB,#0AHDIVAB

MOV26H,A;存储第三位商

MOVA,BSWAPAADDA,28HMOVB,#0AHDIVAB

MOV27H,A;存储第四位商MOV51H,B;存储十进制数十位

MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB

MOV24H,A;存储第一位商

MOVA,BSWAPAADDA,26HMOVB,#0AHDIVAB

MOV25H,A;存储第二位商

MOVA,BSWAPAADDA,27HMOVB,#0AHDIVAB

MOV26H,A;存储第三位商MOV52H,B;存储十进制数百位

MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB

MOV24H,A;存储第一位商

第16页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告

MOVA,BSWAPAADDA,26HMOVB,#0AHDIVAB

MOV25H,A;存储第二位商MOV53H,B;存储十进制数千位

MOVA,24HSWAPAADDA,25HMOVB,#0AHDIVAB

MOV54H,B;存储十进制数万位MOV55H,A;存储十进制数十万位

MOVR2,#06MOVR0,#50HMOVR1,#5FHMOVDPTR,#TABNEXT3:MOVA,@R0

MOVCA,@A+DPTRINCR0INCR1

MOV@R1,ADJNZR2,NEXT3

MOVR2,#06MOVR4,#0FEHMOVR1,#60HSETBP3.0

LOOP:MOVA,R4

MOVP1,AMOVA,@R1MOVP0,A

LCALLDELAY

INCR1MOVA,R4RLA

MOVR4,A

DJNZR2,LOOP

RET

TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDB77H,7CH,39H,5EH,79H,71HDELAY:MOV40H,#250LP0:NOP

DJNZ40H,LP0RET

第17页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告

END

十六进制转化为十进制的方法:

第一步将最高位的高半字节提出来,除以10,把商存储起来,余数与最高位的低半字节组合成一个字节,再除以10,再存储商,余数以此类推,直到最后一次计算得到的余数即为十进制数的个位;第二步把第一步存储的商组合成一个字节,依次除以10,仍然把每次得到的商存储起来,以此类推最后一次得到的余数即为十进制数的十位;以后也是以此类推得到十进制数的百位、千位……以上算法必须要注意的一个问题是,每次得到的余数与低位的半字节组合成一个字节时,余数必须放在该字节的高半字节,否则计算错误。该本次频率计系待测的时钟信号的最高频率为460800Hz,对应的十六进制数为70800H,这里就以70800H转换为十进制数为例来说明这种算法。

第一步:用7H除以10,商0H余7H,把商0存储在24H单元,余数7H与下一个字节08H的高半字节0H组合成一个字节70H。70H除以10,商BH余2H,把商BH存储在25H单元,余数2H与8H组合成一个字节28H。28H除以10,商4H余0H,把商4H存储在26H单元,余数0H与0H组合成一个字节00H。00H除以10,商0H余0H,把商0H存储在27H单元,余数0H与0H组合成一个字节00H。00H除以10,商0H余0H,把商0H存储在28H单元,余数0即为所需十进制数的个位。

第二步:把存储在24H与25H单元的商组合成一个字节0BH。0BH除以10,同第一步,存储商,余数与下一个商组合成一个字节,再除以10,一次类推得到十进制数的十位0。

第三步:方法同第二步,得到十进制数的百位8。第四步:方法同第三步,得到十进制数的千位0。

第五步:方法同第四步,得到十进制数的万位6和十万位4。

最后得到了十进制数460800。图5.3详细的展示了这种进制转换算法的过程。

第18页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告

个位为0(23H)=07H(22H)=08H(21H)=00H07H/10商0余770H/10商B余228H/10商4余000H/10商0余000H/10商0余0

0BH/10商1余114H/10商2余000H/10商0余000H/10商0余0十位为012H/10商1余880H/10商C余880H/10商C余8百位为81CH/10商2余88CH/10商E余0千位为02E/10商4余6万位为6十万位为4③双闸门法:

ORG0000H

AJMPSTART

ORG000BH;T0中断入口AJMPT0INT

ORG001BH;T1中断入口AJMPT1INTORG0030HSTART:MOVSP,#70H

MOVIE,#8AH;10001010B,开放T0、T1中断MOVTMOD,#15H;00010101B,T1定时,T0计数MOVTH1,#3CH

MOVTL1,#0B0H;定时100msMOV20H,#100;100*100ms=10sMOV24H,#10MOVTH0,#00HMOVTL0,#00HMOV21H,#0MOV22H,#0

MOV23H,#0;存放采集到的频率SETBTR1;开始计数SETBTR0

第19页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告

WAIT:AJMPWAIT;等待中断MOVR2,#06MOVR0,#50HMOVR1,#5FHMOVDPTR,#TAB

NEXT30:MOVA,@R0;50H55H查表,字形存在60H65HMOVCA,@A+DPTRINCR0INCR1

MOV@R1,A

DJNZR2,NEXT30;6次

MOVR6,#100;循环显示100次MOV66H,#3FH;最高位显示0KOP0:MOVR2,#06

MOVR4,#0FEH;字位初值MOVR1,#61H;乘以10SETBP3.0

LOOP0:MOVA,R4;字位MOVP1,A

MOVA,@R1;字形MOVP0,A

LCALLDELAYINCR1MOVA,R4RLA

MOVR4,A

DJNZR2,LOOP0DJNZR6,KOP0

T0INT:INC23H;计数器溢出则23H单元自增1RETI

T1INT:DJNZ20H,NEXT1;定时100ms产生中断CLRTR1;停止计数CLRTR0

MOV20H,#100

MOV22H,TH0;10s时间到则采集数据MOV21H,TL0CLRC

MOVA,22HSUBBA,#30HJNCCEPINGCLRC

MOVA,23HSUBBA,#01HJNCCEPINGMOVTH0,#00HMOVTL0,#00H

CEZHOU:LCALLDISPLAY0LJMPKK

第20页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告

CEPING:LCALLDISPLAY1KK:MOV21H,#0MOV22H,#0MOV23H,#0

NEXT1:MOVTH1,#3CH;继续定时MOVTL1,#0B0HSETBTR1SETBTR0EXIT:RETI

DISPLAY0:MOVR0,#60H

MOVR1,#07H;对60H-66H单元清零NEXT20:MOV@R0,#0INCR0

DJNZR1,NEXT20ZHUANHUAN0:;进制转换

;////////////////////////////////////////////////////////////////////////////////////////////DISPLAY1:

MOVR0,#60H

MOVR1,#06H;对60H-65H单元清零

NEXT2:MOV@R0,#0

INCR0

DJNZR1,NEXT2

ZHUANHUAN:;进制转换

MOVR2,#06MOVR0,#50HMOVR1,#5FHMOVDPTR,#TAB

NEXT3:MOVA,@R0

MOVCA,@A+DPTRINCR0INCR1

MOV@R1,ADJNZR2,NEXT3MOVR6,#20

KOP:MOVR2,#06

MOVR4,#0FEHMOVR1,#60HSETBP3.0LOOP:MOVA,R4

MOVP1,AMOVA,@R1MOVP0,A

LCALLDELAYINCR1

MOVA,R4RLA

第21页共22页电气0809班0829201*陈艺端单片机课程设计频率计总结报告

MOVR4,A

DJNZR2,LOOPDJNZR6,KOPRET

TAB:DB03FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDB77H,7CH,39H,5EH,79H,71HDELAY:MOV40H,#250LP0:NOP

DJNZ40H,LP0RETEND

第22页共22页

友情提示:本文中关于《单片机课程总结》给出的范例仅供您参考拓展思维使用,单片机课程总结:该篇文章建议您自主创作。

  来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


单片机课程总结
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/743478.html
相关阅读
最近更新
推荐专题