微机考试重点_第1页
微机考试重点_第2页
微机考试重点_第3页
微机考试重点_第4页
微机考试重点_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

MCS-51核的应用1基本的内核:8位CPUROM(2~64k),RAM(128/256字节)定时器(2~3个)串行通信数据口并行I/O口扩展:16位CPU模拟信号输入/输出SOC发展方向(IP核)堆栈和堆栈指示器堆栈是在存储器中分配的、具有连续地址的一片存储区域。FILO(FirstInLastOut)CPU按堆栈指示器SP访问堆栈中的内容压栈:先调整SP中的地址,在存入新的数据到栈顶位置;弹栈:先从栈顶取数,再反向调整SP地址内容.SP始终指向栈顶位置.内存地址与高级语言变量的关系变量(数组)依据其类型占据一定的字节数char/unsignedchar1字节int/unsignedint2字节long/unsignedlong/float4字节编址是按字节为单位,一个字节占一个地址数组所占的地址单元=数组长度×数据类型字节数存储模式bigendian

变量的最高位字节先行分配…littleendian

变量的最低位字节先行分配…ROM(ReadOnlyMemory)只读指运行期间只读,信息不易挥发,掉电也不丢失按初始信息的写入方法和技术进步,可以分为以下几类:掩膜ROM:半导体制造过程的最后一道掩膜工艺,根据用户提交的存储内容决定MOS管的连接方式,制作成芯片后用户不能更改。掩膜适合于成熟大批量生产;PROM(ProgrammableReadOnlyMemory)出厂时空白,未存储信息,采用通用编程器,将程序或数据一次性写入,以后无法更改,现在PROM实际应用不多;EPROM(EraseableProgrammableReadOnlyMemory)是可擦除、可编程只读存储器。UVEPROM紫外线擦除EEPROM电擦除(目前实际应用较多)RAM(RandomAccessMemory)读取,原数不变;写入,原数被新数覆盖RAM存放数据,程序代码,也可分配为堆栈按存储原理RAM可以分为静态和动态两类SRAM(StaticRAM)每一位是个触发器,双稳态结构写入SRAM,如果电源正常,不会自行挥发但在同样的芯片体积下,集成度较低DRAM(DynamicRAM〕依靠MOS管的极间电容存储信息,集成度高,动态RAM的存储容量大.由于电荷容易泄漏,所以需要周期性刷新,刷新电路通过“读出——写入”电路来再生极间电容上的电荷。一般2ms刷新一次。集成度高。新型存储器OTPROM〔OneTimeProgrammbleROM〕FLASHROM也即闪存,快速编程的EEPROM。在MP3,CF卡,U盘中的芯片基于FLASH的ISP(InSystemProgram)和IAP(InApplicationProgram)技术,可以远程升级嵌入式系统的程序。串行FLASHROM控制简单、容量大,价格低廉,用来存储工作参数等。动态RAM方面(内存条技术)早期的快速页方式FPM(FastPageMode),70ns;可扩展数据输出方式EDO(ExtendedDataOutput)可达60ns;同步DRAM,即SDRAM(SynchronousDRAM)能与系统总线时钟同步工作,读写速度可达10nS,甚至7nS。中断中断(Interrupt)因事件发生,程序中止正常的执行流程,转入到该事件的处理程序。中断服务例程(ISR,Interruptserviceroutine)完成事件处理的代码,称为中断服务过程ISR。中断返回事件处理完毕(ISR执行完毕)返回正常的流程。与子程序调用的区别调用是程序主动的,响应事件是被动的。无法预知事件何时发生,与程序流程是异步的。都会形成断点,并需要保存,以便返回,中断的断点是随机的。关于DMA的应用MCS-51CPU是否支持DMA?答:本身不支持。MCS-51的CPU不能放弃对其总线的控制权,自身也不能挂起;哪些场合使用DMA?答:当输入/输出为高速设备时,非DMA方式数据存取使用程序循环(每个数据的处理包含硬件操作、指针修改、结束判断等);DMA方式完成这些工作是依靠硬件的,能发挥高速设备的效率。以FIFO缓冲队列为媒介的DMA:

1硬件将高速设备连接到FIFO的一端,CPU为另一端。不要求CPU出让总线,CPU与DMA异步工作;2ADI的BLACKFin系列MCU自带多媒体数据采集,具有DMA功能,每秒采集25帧图象,配备MP4图象压缩芯片,可以实现视频数字录象复位与复位状态复位:使CPU处于已知的初试状态;复位电路:高电平连续维持24个以上的时钟周期,使内部有关寄存器为默认值;图中PC等的初值意味着什么?(main高级语言运行之前,引导程序要做的若干工作与此有关)128/256字节内部RAM中的内容是否被复位到00H?

没有说!理解为与复位无关。寄存器内容PC0000HACC00HB00HSP07HDPTR0000HP0~P3FFH……

程序存储器映像PC是16位,所以能寻址64KBROM。每个地址单元是8位的,所以是1字节宽:单字节指令占一个地址,多字节指令占多个字节

无论物理存储器是掩膜ROM/FLASHROM,内部是否有ROM,程序存储器的映像是编程模型的一部分。

MCS-51系列微控制器的P0~P3P1口的结构(锁存器,三态门和驱动)写状态“1”或“0”到引脚;读引脚、读锁存器;“读——修改——写”操作;可以字节操作,也可位操作。准双向I/O口P1口是通用的准双向I/O口。输出高电平时,能向外提供拉电流负载,不必再接上拉电阻;当口用作输入时,须向口锁存器写入1。P3的结构类似于P1,P3也是准双向口;具有第二功能,其操作通过相应的特殊功能寄存器;剩余的第一功能用位操作。P3口的第二功能引脚分布

第一功能第二功能信号名功能描述方向P3.0RxD串行通信输入IP3.1TxD串行通信输出OP3.2/INT0外部中断输入0IP3.3/INT1外部中断输入1IP3.4T0定时器/计数器外部输入0IP3.5T1定时器/计数器外部输入0IP3.6/WR扩展RAM写控制信号OP3.7/RD扩展RAM读控制信号OP2口的结构作为端口,与P1类似,准双向口;根据指令的需要,控制MUL开关;输出高8位地址A8~A15,是总线功能(有些系统只需要低8位地址)P0口的结构端口功能低8位地址功能数据总线功能P0用作通用I/O口

当系统既不进行片外的ROM扩展,也不进行片外RAM扩展时,P0用作通用I/O口。在这种情况下,硬件自动使MUX开关接向锁存器的反相输出端。与门输出的“0”使输出驱动器的上拉场效应管T1处于截止状态。因此,输出级工作在漏极开路方式。外接上拉电阻可构成准双向口。

P0作地址/数据总线在外部存储器访问周期,P0口分时传输低8位地址信息和数据信息,用作总线;在地址(或数据)的输出阶段,硬件自动将MUL开关接至反相器的输出端,T1,T2呈推挽方式驱动,引脚电平跟随内部地址线(或数据线)的状态;CPU读总线阶段,硬件自动将MUX开关拨向锁存器、自动向锁存器写入FFH并且置“读引脚”信号有效;P0.X引脚的状态经缓冲器进入内部数据总线。

作地址/数据总线时P0口是一个真正的双向口。P1~P3口的电平及驱动能力:

P0、P1、P2、P3口的电平与CMOS和TTL电平兼容。P0口的每一位口线可以驱动8个LSTTL负载。在作为通用I/O口时,由于输出驱动电路是开漏方式,由集电极开路(OC门)电路或漏极开路电路驱动时需外接上拉电阻;当作为地址/数据总线使用时,口线输出不是开漏的,无须外接上拉电阻。P1、P2、P3口的每一位能驱动4个LSTTL负载。它们的输出驱动电路设有内部上拉电阻,所以可以方便地由集电极开路(OC门)电路或漏极开路电路所驱动,而无须外接上拉电阻。由于单片机口线仅能提供几毫安的电流,当作为输出驱动一般的晶体管的基极时,应在口与晶体管的基极之间串接限流电阻。

7.1.1指令分类

33种功能,111条指令按指令字节数分:

1字节、2字节、3字节。按指令的机器周期数分类:

1、2、4个周期最频繁的指令为单周期,故fosc=12MHz,Tm=1

s。——1.0MIPS7.1指令系统概述4栈操作指令进栈指令

PUSHdirect;(SP)←(SP)+1,((SP))←(direct)

功能:堆栈指针SP加1,然后将直接地址direct单元的内容送到SP所指向的栈顶。出栈指令

POPdirect;(direct)←((SP)),(SP)←(SP)-1

功能:将SP所指向的堆顶的内容送到直接地址direct指向的单元中,然后堆栈指针SP减1。关键词存储空间地址范围data

直接寻址片内RAM 0x00-0x7fidata

间接寻址片内RAM 0x00-0xffbdata

可位寻址片内RAM 0x20-0x2F按字节访问bit

在bdata空间定义 0x00-0x7F按位访问sfr

特殊功能寄存器

0x80-0xffsbit

特殊功能寄存器中的可位寻址的位

xdata

扩展RAM 0x0000-0xffff

pdata

页式寻址扩展RAM 0xPP00-0xPPffPP=(P2)code

程序ROM 0x0000-0xffff中的常数表C-51数据的存储类型存储模式SMALL 默认的存储类型是dataCOMPACT 默认的存储类型是pdataLARGE 默认的存储类型是xdata开发环境默认的初始状态是SMALL可以修改C51的基本数据类型数据类型长度(bit)长度(byte)值域bit11/80,1unsignedchar810~255signedchar81–128~127unsignedint1620~65535signedint162–32768~32767unsignedlong3240~4294967295signedlong324–2147483648~2147483647float324±1.176E–38~±3.40E+38(6位数字)double648±1.176E–38~±3.40E+38(10位数字)C-51的常用头文件reg51.h定义特殊功能寄存器和位寄存器math.h浮点运算库ctype.h字符函数stdio.h标准输入输出stdlib.h标准库函数absacc.h辅助宏,支持绝对地址说明例:I/O口定义#include<absacc.h>#defineportXBYTE[0x1000]//扩展RAM区的端口定时与计数的原理事件脉冲fosc预分频初值寄存器溢出回零门+1/-1二进制计数器MCS-51的计数是加;计数值+初值=容量;没有位寻址功能只能使用字节传送MOVTMOD,#..T0,T1的方式控制字GATEGATEC/TM1M0C/TM1M0T1控制字段T0控制字段

TMOD89H启用P3.2/P3.3(分别对应于T0/T1)作为外部控制引脚0为定时1为计数M1,M0为方式0,1,2,3的编码控制字寄存器TF1TF0TR0TR1IE1IE0IT0IT1TCON88HT0触发控制T1触发控制T0溢出标志T1溢出标志语句TR0=0;TR0=1;分别表示开启或关闭定时器方式013位计数,范围0~213-1;方式116位计数,范围0-216-1;方式2,3为8位计数,范围0~255;最小定时单位:fosc/12T0/T1的初始化计数初值范围例

晶体频率为12MHz,欲每5ms能向CPU发出一个定时处理请求。试编程完成处始化任务。解:选T0,定时方式;硬件预分频是固定的1/12,计数频率是f=fosc/12=1M;即计数周期为tc=1/f=1us;5ms需要的计数值是5×10-3/1×10-6=5000;可选方式0(13位方式),计算范围213=8192初值为:8192–5000=31923192=0x0C78h=01100011,11000(Binary)高8位0xc3,低5位0x18另解

选用方式1(16位方式),计算范围为216=65536,计数初值为:65536–5000=61536=0xF060初始化语句:TMOD=0x01; //00000001 ;

//T0无GATE,Timer,Mode0TH0=0xF0; //低8位TL0=0x60; //高8位TR0=1;…

思考:如果是采用T1,应该怎样做?TMOD=0x01;//00000001BTH0=0x1Fh;TL0=0;TR0=1;COUNT=0; //计数清0用MCS-51MCU构成一个石英时钟fosc=11.0592MHz,每秒需要计数921600次;1/16秒需要计数57600次,在T0或T1的允许范围之内;硬件计数每个周期57600个时钟,再用软件与之结合,对一个变量进行累加,计满16就是一秒;60秒为一分,60分为1小时,…计数时间间隔初值的计算65536-57600=7936=1F00h,高8位是1Fh,低8位是00h,方式1、定时、结合计数变量例9-2以P1.0,P1.1,P1.3分别控制三相步进电机的A,B,C三相依次通电,通电规律为“A-AB-B-BC-C-CA-A-...”,换相时间间隔为0.5ms(CPU时钟为6MHz)。采用T0定时,查询方式工作。解:CPU时钟为6MHz,则计数频率为6MHz/12=0.5MHz,周期为2μs;定时间隔为0.5ms=500μs;计数值为500μs/2μs=250;只需要8位计数就够了,选用方式2。初值为28-250=6程序#include<reg51.h>unsignedcharcodeTable[6]={1,3,2,6,4,5};//通电相序voidmain(){ P1=0; //步进电机各相断电

TMOD=(TMOD&0xF0)|0x02; //T0无GATE,定时,方式2 TH0=6; //初值寄存器初值

TL0=6; //第一次计数初值,以后自动重载

TR0=1; //启动定时器T0 while(1) { pHndl=0; //表指针清0 while(!TF0){} TF0=0; P1=Table[pHndl++];//送数,步进电机通电相序变化

if(pHndl==6)pHndl=0; //指针+1调整

}}例9-3在某牛奶自动灌装线上,每检测到20瓶,产生一个装箱指令脉冲,使相关设备动作。试用MCS-51型微控制器的计数器实现该控制要求。检测信号从T1引脚(P3.5)输入,指令脉冲从P1.2输出。解:自动灌装线上装有传感装置,每检测到一瓶牛奶向T1引脚发送一个脉冲信号;使用计数功能,可实现该控制要求;选T1的方式2;初值为256-20=236=0xEC。

程序:sbitOut=P1^2;voidmain()

{

T1=0; //清除输出

TMOD=0x60; //T1,无GATE //计数,方式2 TL1=0xEC; //初值

TH1=0xEC; //初值

TR1=1; //启动

while(1) { while(!TF1){} TF1=0; Out=1; //高电平

Out=1; //重复送数,少许等待

Out=1; Out=0; }}更多定时器/计数器(T/C)应用的C语言编程例:设fosc=12MHz晶振,要求在P1.0脚上输出周期为2ms的方波。解:设高电平时间与低电平时间各1ms,每隔1msP1.0取反。预分频12,计数频率为1MHz,计数周期1μs(即机器周期),计数次数=1000,计数初值=-1000的补码;用定时器0的方式1编程,采用查询方式,程序如下:

#include<reg51.h>sbitP1_0=P1^0;

voidmain(void){ TMOD=0x01; /*设置定时器1,无门控,方式1*/ TR0=1; /*启动T/C0*/ for(;;) { TH0=(-1000)/256; /*装载计数器初值*/ TL0=(-1000)%256;

do{}while(!TF0); /*查询等待TF0置位*/ P1_0=!P1_0; /*定时时间到P1.0反相*/ TF0=0; /*软件清TF0*/}}矢量中断所谓矢量中断,就是一个中断对应一个入口地址;被开放的、且经过优先级判别而胜出的中断请求信号送到CPU;CPU用硬件的方法生成一条CALL指令,调用相关的矢量地址。隐含的工作:保留断点到堆栈;记录中断状态和当前优先级下一个机器周期…

…转ISR执行(事件的处理)中断的条件无同级、或高优先级中断正在服务中;当前指令已执行到最后一个机器周期并将结束;当前正在执行的不是RETI,IE,IP等指令可能导致改变中断系统状态的指令C51的中断函数void函数名

interrupt中断号

using寄存器组号函数名由编译器使用,是形式上的,但要求唯一中断号0,1,2,3,4,…对应于中断源;寄存器组号可以是0~3,但实际为1,2,因为0保留给正常程序;1为低优先级中断;2高低优先级中断;3为用户保留初始化部分#include<reg51.h>intrpm,m;unsignedcharTc;voidmain(void){TMOD=1; //方式1,16位计数TH0=0x1F; //计数57600,初值7936=0x1F00TL0=0; ET0=1; //T0允许中断TR0=1; //T0走时开始IT0=1; //INT0中断为边沿触发方式EX0=1; //INT0允许中断EA=1; //CPU允许中断m=0; //转速脉冲计数初值清0rpm=0; //转速清0Tc=0; //1/16秒累计While(1){ //addyourothercodehere}}单工通信单工(Simplex)特点:仅能进行一个方向的数据传送

设备A发送器设备B接收器Dataflow半双工通信半双工(HalfDuplex)特点:数据可以在两个方向上进行传送,但是这种传送绝不能同时进行。【双向,但不同时】设备A发送器/接收器设备B接收器/发送器Dataflow全双工通信全双工(FullDuplex)特点:能够在两个方向同时进行数据传送。设备A发送器/接收器设备B接收器/发送器通信速率比特率——每秒传输的二进制位数,单位为bps(bitpersecond)。波特率―――每秒传输的离散状态数(也称离散状态)。在一个信道上,如果只有高、低电平两种离散状态(分别代表“1”和“0”),则波特率与比特率刚好一致。如果在某个信道中可以传输多种不同的离散状态,则每个状态可以携带两位或两位以上的二进制数,此时,波特率就不等于比特率。波特率有标准值MCS-51的串行控制器相关资源TxDRxD引脚SBUFSCON寄存器波特率时钟发生器T1orT2固定(相对于fosc)用途全双工串行通信串行方式I/O口扩展典型应用(实用)8255与MCS-51的接口和编程MCS-51扩展8255控制打印机的C语言编程例78255控制打印机。扩展8255与打印机接口的电路。8255的片选线为A7,打印机与MCS-51采用查询方式交换数据。打印机的状态信号输入给PC7,打印机忙时BUSY=1,微型打印机的数据输入采用选通控制,当STB上负跳变时数据被输入。8255采用方式0由PC0模拟产生STB信号。按照接口电路,口A地址为7CH,口C地址为7EH,命令口地址为7FH,PC7~PC4输入,PC3~PC0输出。方式选择命令字为8EH。unsignedcharxdataPortA_at_0x007C;unsignedcharxdataPortB_ar_0x007D;unsignedcharxdataPortC_at_0x007E;unsignedcharxdataCtrlW_at_0x007F;voidInit8255(void) //8255初始化子程序{ CtrlW=0x8A; //方式控制字

CtrlW=0x01; //位控字,PC0置1,/STB置高}VoidCharPRN(unsignedcharx4prt) //字符打印子程序{unsignedcharTmp; do//检查是否忙 { Tmp=PortC; }while(Tmp&0x80); PortA=x4prt; //发送ASCII

CtrlW=0; //PC0变低 CtrlW=1; //PC0变高}(紧接前页)voidmain(void){unsignedcharcodeHello[]=“Hello,world!”,0x0D,0x0A,0x00;unsignedchari=0; do { CharPRN(Hello[i++]); }while(Hello[i]!=0); ……}7.13.2七段数码显示与MCS-51的接口数码显示器有静态显示和动态显示两种显示方式。数码显示器有发光管的LED和液晶的LCD两种。

LED显示器工作在静态方式时,其阴极(或其阳极)点连接在一起接地(或+5V),每一个的端选线(a,b,c,d,e,f,g,dp)分别与一个8位口相连。LCD数码显示只能工作在静态显示,并要求加上专门的驱动芯片4056。

LED显示器工作在动态显示方式时,段选码端口I/O1用来输出显示字符的段选码,I/O2输出位选码。I/O1不断送待显示字符的段选码,I/O2不断送出不同的位扫描码,并使每位显示字符停留显示一段时间,一般为1~5ms,利用眼睛的视觉惯性,从显示器上便可以见到相当稳定的数字显示。例188155控制的动态LED显示。图7.23经8155扩展端口的6位LED动态显示确定的8155片内4个端口地址如下:命令/状态口:FFF0H口A: FFF1H口B: FFF2H口C: FFF3H

6位待显示字符从左到右依次放在dis_buf数组中,显示次序从右向左顺

温馨提示

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

评论

0/150

提交评论