版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机知识点1单片机知识点周冰微处理器:是小型计算机或微型计算机的控制和处理部分。又称中央处理单元CPU,CentralProcessingUnit,。Microcomputer,简称微机,是具有完整运算及控制功能的计算机。包括:微处理器(CPU)、微型计算机,存储器、接口适配器,输入输出接口电路,、输入/输出,I/O,设备。Single-ChipMicrocomputer,是将微处理器、一定容量RAM和ROM以及I/O口、定单片机SCM,时器等电路集成在一块芯片上,构成单片微型计算机。也称为微控制器MCU(MicroControllerUnit)【微处理器、RAM、ROM、I/O口、定时器】预备知识数字电路中只有两种电平,高和低,本课程中,定义单片机为TTL电平,高+5V低0VRS232电平,计算机的串口高-12V低+12V所以计算机与单片机之间通讯时需要加电平转换芯片max232,实验板上左下角,。MCS-51单片机硬件结构及引脚1、MCS-51单片机的内部结构MCS-51单片机的组成,CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器,、I/O口(串口、并口,、内部总线和中断系统等。组成框图如右,总线,BUS,是计算机各部件之间传送信息的公共通道。微机中有内部总线和外部总线两类。内部总线是CPU内部之间的连线。外部总线是指CPU与其它部件之间的连线。外部总线有三种:数据总线DB,DataBus,,地址总线AB,AddressBus,和控制总线CBControlBus,。CPU,由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器,RAM,用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据,ROM,用以存放程序、一些原始数据和表格,12单片机知识点周冰I/O口,四个8位并行I/O口,既可用作输入,也可用作输出,T/C,两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式,单片机引脚的功能:8051单片机有40个引脚,分为端口线、电源线和控制线三类。,电源线1GND,接地引脚。VCC,正电源引脚。接,5V电源。2,端口线P0,P3口,4×8=32条。1,P0口,P0.0,P0.7,,8位双向三态I/O口,可作为外部扩展时的数据总线/低8位地址总线的分时复用口。又可作为通用I/O口,每个引脚可驱动8个TTL负载。对EPROM型芯片,如8751,进行编程和校验时,P0口用于输入/输出数据。,2,P1口,P1.0,P1.7,8位准双向I/O口,内部具有上拉电阻,可作为通用I/O口。每个引脚可驱动4个TTL负载。,3,P2口,P2.0,P2.7,8位准双向I/O口,内部具有上拉电阻,可作为外部扩展时的高8位地址总线。又可作为通用I/O口,每个引脚可驱动4个TTL负载。对EPROM型芯片,如8751,进行编程和校验时,用来接收高8位地址。,4,P3口,P3.0,P3.7,8位准双向I/O口,内部具有上拉电阻。它是双功能复用口,作为通用I/O口时,功能与P1口相23单片机知识点周冰同,常用第二功能。每个引脚可驱动4个TTL负载。作为第二功能使用时,各位的作用如下页表所示。P3第二功能各引脚功能定义,RXD串行口输入P3.1,TXD串行口输出P3.2,INT0外部中断0输入P3.0,P3.3,INT1外部中断1输入P3.4,T0定时器0外部输入P3.5,T1定时器1外部输入WR外部写控制P3.7,RD外部读控制P3.6,2,时钟引脚,1,XTAL1,19脚,,如果采用外接晶体振荡器时,此引脚应接地。,2,XTAL2,18脚,,接外部晶体的另一端。3,控制线提供控制信号,有的引脚还具有复用功能。(1)RST/VPD(9脚),复位与备用电源。(2)ALE/PROG*,30脚,,第一功能ALE为地址锁存允许,可驱动8个LS型TTL负载。PROG*为本引脚的第二功能。为编程脉冲输入端。(3)PSEN*,29脚,,读外部程序存储器的选通信号。可以驱动8个LS型TTL负载。(4)EA*/VPP(EnableAddress/VoltagePulseofPrograming,31脚)EA*为内外程序存储器选择控制端。EA*=1,访问片内程序存储器,但在PC,程序计数器,值超过0FFFH,对于8051、8751,时,即超出片内程序存储器的4K字节地址范围时,将自动转向执行外部程序存储器内的程序。EA*=0,单片机则只访问外部程序存储器。VPP为本引脚的第二功能。对89S52,加在VPP脚的编程电压为+12V或+5V。单片机主要掌握以下几点最小系统能够运行起来的必要条件。1.电源2.晶振3.复位电路34单片机知识点周冰对单片机任意IO口的随意操作1.输出控制电平高低2.输入检测电平高低。定时器,重点掌握最常用的方式2中断,外部中断、定时器中断、串口中断串口通信,单片机之间、单片机与计算机基本数据类型sfr:特殊功能寄存器声明sfr16:sfr的16位数据声明sbit:特殊功能位声明bit:位变量声明例,sfrSCON=0X98;sfr16T2=0xCC;sbitOV=PSW^2;常用有:reg51.hreg52.h,定义特殊功能寄存器和位寄存器,,math.h,定义常用数学运算,,voidmain()隔2000ms闪烁{程序,一,点亮第一个发光unsignedinti;#include<reg52.h>while(1)#defineuintunsignedint二极管{#defineucharunsignedchar#include<reg52.h>i=50000;sbitled1=P1^0;voidmain()led1=0;voiddelay(uintz)//延时{while(i--);P1=0xfe;i=50000;函数while(1);led1=1;}while(i--);{}uintx,y;程序,二,让第一个发光二}for(x=z;x>0;x--)for(y=110;y>0;y--);极管闪烁程序,三,}#include<reg52.h>voidmain()//第一个发光二极管以间sbitled1=P1^0;{45单片机知识点周冰while(1)uchara;uchara,i;a=0xfe;while(1){while(1){led1=0;{a=0xfe;delay(2000);P1=a;for(i=0;i<8;i++)led1=1;beep=0;{delay(2000);delay(500);P1=a;}beep=0;}P1=0xff;delay(50);beep=1;beep=1;程序,四,delay(500);delay(50);a=_crol_(a,1);a=_crol_(a,1);//8个发光管由上至下间隔}}}a=0x7f;1s流动for(i=0;i<8;i++)程序,五,{//每个管亮500ms,灭P1=a;beep=0;500ms,亮时蜂鸣器响//8个发光管来回流动delay(50);beep=1;//灭时关掉蜂鸣器,一直重//每个管亮100ms,流动时delay(50);a=_cror_(a,1);复下去让蜂鸣器发声}#include<reg52.h>#include<reg52.h>}#include<intrins.h>#include<intrins.h>}#defineuintunsignedint#defineuintunsignedint#defineucharunsignedchar#defineucharunsignedcharsbitbeep=P2^3;sbitbeep=P2^3;voiddelay(uintz)voiddelay(uintz){{uintx,y;uintx,y;for(x=z;x>0;x--)for(x=z;x>0;x--)for(y=110;y>0;y--);for(y=110;y>0;y--);}}voidmain()voidmain(){{运算器对操作数进行算术、逻辑运算和位操作。1,算术逻辑运算单元ALU2,累加器A3.寄存器B4.程序状态寄存器PSW控制器1,程序计数器PC,ProgramCounter,2,指令寄存器IR、指令译码器及控制逻辑电路存储器空间可划分为5类,1.程序存储器2.内部数据存储器3.特殊功能寄存器,SFR-SpecialFunctionRegister,4.位地址空间56单片机知识点周冰5.数据寄存器程序存储器ROM存放应用程序和表格之类的固定常数。分为片内和片外两部分,AT89S528K的可编程Flash存储器,地址0000H-1FFFH,外部扩展到64KB,由EA*引脚上所接的电平确定。程序存储器中的0000H地址是系统程序的启动地址,单片机复位后PC的内容为0000H6个单元具有特殊用途表2-16种中断源的中断入口地址中断标志位外中断0,INT0*)0003HIE0定时器0(T0)中断000BHTF0外中断1,INT1*)0013HIE1定时器1(T1)中断001BHTF1串行口中断0023HTI(发送)/RI,接收,定时器2(T2)中断002BHTF2,T2溢出,/EXF2(T2EX)特殊功能寄存器(SFR)CPU对各种功能部件的控制采用特殊功能寄存器集中控制方式,共32个。1,程序计数器PC,ProgramCounter,存放下一条要执行的指令在程序存储器中的地址。基本工作方式有以下几种,,1,程序计数器自动加1,2,执行有条件或无条件转移指令时,程序计数器将被置入新的数值,从而使程序的流向发生变化。,3,在执行调用子程序调用或中断调用,完成下列操作,?PC的现行值保护?将子程序的入口地址或中断向量的地址送入PC。2累加器A使用最频繁的寄存器,也可写为Acc。A的作用,,1,是ALU单元的输入之一,又是运算结果的存放单元。,2,数据传送大多都通过累加器A。A的进位标志Cy。67单片机知识点周冰3.寄存器B为执行乘法和除法操作设置的。在不执行乘、除的情况下,可当作一个普通寄存器来使用。,程序状态字寄存器PSW4,1,Cy,PSW.7,进位标志位2,Ac(PSW.6)辅助进位标志位,,3,F0,PSW.5,标志位由用户使用的一个状态标志位。,4,RS1、RS0,PSW.4、PSW.3,,4组工作寄存器区选择控制位1和位0。所选的4组寄存器RS1RS0000区,内部RAM地址00H,07H,011区,内部RAM地址08H,0FH,102区,内部RAM地址10H,17H,113区,内部RAM地址18H,1FH,,5,OV,PSW.2,溢出标志位指示运算是否产生溢出。,6,PSW.1位:保留位,未用,7,P(PSW.0)奇偶标志位P=1,A中“1”的个数为奇数P=0,A中“1”的个数为偶数5.I/O端口P0,P3P0,P3分别为I/O端口P0,P3的锁存器。可按字节寻址也可按位寻址。6.串行数据缓冲器SBUF存放欲发送或已接收的数据,一个字节地址,由两个独立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器。7.定时器/计数器3个16位定时器/计数器T0,T1和T2,各由两个独立的8位寄存器组成,TH0、TL0、TH1、TL1、TH2、TL2,只能字节寻址。并行I/O端口78单片机知识点周冰4个双向的8位并行I/O端口(Port),记作P0,P3属于特殊功能寄存器,还可位寻址。1、P0端口P0口传送地址或数据时,CPU发出控制信号为高电平,打开上面的与门,使多路转接开关MUX打向上边,使内部地址/数据线与下面的场效应管处于反相接通状态。这时的输出驱动电路由于上下两个FET处于反相,形成推拉式电路结构。P0口作通用的I/O口使用时,CPU发来的“控制”信号为低电平,上拉场效应管截止,多路转接开关MUX打向下边,与D锁存器的Q*端接通。P0口作通用的I/O口使用:,1,作输出口使用来自CPU的“写入”脉冲加在D锁存器的CP端,内部总线上的数据写入D锁存器,并向端口引脚P0.x输出。注意,由于输出电路是漏极开路,因为这时上拉场效应管截止,,必须外接上拉电阻才能有高电平输出。,2,作输入口使用应区分“读引脚”和“读端口”,或称“读锁存器”,。“读引脚”信号把下方缓冲器打开,引脚上的状态经缓冲器读入内部总线,“读锁存器”信号打开上面的缓冲器把锁存器Q端的状态读入内部总线。2、P1端口字节地址90H,位地址90H,97H。P1口只作为通用的I/O口使用,在电路结构上与P0口有两点区别,,1,因为P1口只传送数据,不再需要多路转接开关MUX。,2,由于P1口用来传送数据,因此输出电路中有上拉电阻,这样电路的输出不是三态的,所以P1口是准双向口。因此,,1,P1口作为输出口使用时,外电路无需再接上拉电阻。,2,P1口作为输入口使用时,应先向其锁存器先写入“1”,使输出驱动电路的FET截止。3、P2端口字节地址为A0H,位地址A0H,A7H。89单片机知识点周冰4、P3端口P3口的字节地址为B0H,位地址为B0H,B7H表2-2P3口的第二功能定义第二功能口引脚P3.0RXD,串行输入口,P3.1TXD,串行输出口,P3.2INT0*,外部中断0,P3.3INT1*,外部中断1,P3.4T0,定时器0外部计数输入,P3.5T1,定时器1外部计数输入,P3.6WR*,外部数据存储器写选通,P3.7RD*,外部数据存储器读选通,例3.2.1编写程序使第一个数码管显示8while(1);//程序停止到这里},part2.1_.1cP59,例3.2.2让实验板上6个数码管同时点亮,依次显#include<reg52.h>//52系列单片机头文件示0到F,时间间隔为0.5ms,循环下去。,part2.1_2.csbitdula=P2^6;//申明U1锁存器的锁存端P61,sbitwela=P2^7;//申明U2锁存器的锁存端#include<reg52.h>//52系列单片机头文件voidmain(){#defineucharunsignedchar#defineuintunsignedintwela=1;//打开U2锁存器sbitdula=P2^6;//申明U1锁存器的锁存端P0=0xFE;//送入位选信号sbitwela=P2^7;//申明U2锁存器的锁存端wela=0;//关闭U2锁存器ucharnum;uncharcodetable[]={dula=1;//打开U1锁存器0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};P0=0x7F;//送入段选信号voiddelayms(uint);voidmain()dula=0;//关闭U2锁存器910单片机知识点周冰sbitkey2=P3^5;{wela=1;//打开U2锁存端sbitkey3=P3^6;sbitkey4=P3^7;P0=0xco;//送入位选信号sbitdula=P2^6;//申明U1锁存器的锁存端wela=0;//关闭U2锁存端sbitwela=P2^7;//申明U2锁存器的锁存端while(1)ucharcodetable[]={{for(num=0;num<16;num++)//16个数循0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};环显示voiddelayms(uint);ucharnumt0,num;{dula=1;//打开U1锁存端voiddisplay(ucharnumdis)//显示子函数P0=table[num];//送入段选信号{ucharshi,ge;//分离两个分别要显示的数dula=0;//关闭U1锁存端shi=numdis/10;延时0.5秒delay(500);//ge=numdis%10;}dula=1;}P0=table[shi];//送十位段选数据}voiddelayms(uintxms)dula=0;{P0=0xff;//送位选数据前关闭所有显uinti,j;for(i=xms;i>0;i--)//i=xms即延时约xms毫秒示,防止打开位选锁存时for(j=110;j>0;j--);wela=1;//原来段选数据通过位选锁存}例4.1.1用数码管前两位显示一个十进制数,变化器造成混乱范围为00~59,开始时显示00,每按下S2键一次,P0=0xfe;//送位选数据wela=0;数值加1,每按下S3键一次,数值减1,每按下delayms(5);//延时S4键一次,数值归零,按下S5键一次,利用定时dula=1;器功能使数值开始自动每秒加1,再次按下S5键,P0=table[ge];//送个位段选数据dula=0;数值停止加1,保持显示原数。,part2.2_1.cP82,P0=0xff;wela=1;#include<reg52.h>/52系列单片机头文件P0=0xfd;#defineucharunsignedcharwela=0;#defineuintunsignedintdelayms(5);sbitkey1=P3^4;}1011单片机知识点周冰voiddelayms(uintxms)}{uinti,j;}if(key3==0)for(i=xms;i>0;i--)//i=xms即延时约xms毫秒{for(j=110;j>0;j--);delayms(10);}if(key3==0)voidinit()//初始化函数{num=0;//清0{while(!key3);}TMOD=0x01;//设置定时器0为工作方式}1(00000001)if(key4==0){TH0=(65536-45872)/256;//装初值50ms一次中delayms(10);if(key4==0)断{TL0=(65536-45872)%256;while(!key4);EA=1;//开总中断TR0=~TR0;//启动或停止定时器0}ET0=1;//开定时器0中断}}}voidkeyscan()voidmain(){{if(key1==0)init();//初始化函数{delayms(10);if(key1==0)while(1){{keyscan();num++;display(num);}if(num==60)//当到60时重新归0}num=0;voidT0_time()interrupt1{while(!key1);//等待按键释放TH0=(65536-45872)/256;//重装初值}}TL0=(65536-45872)%256;if(key2==0)numt0++;{if(numt0==20)//如果到了20次,说明1delayms(10);if(key2==0)秒时间到{if(num==0)//当到0时重新归60{numt0=0;//然后把num清0重新再num=60;计20次num--;while(!key2);num++;1112单片机知识点周冰if(num==60)switch(temp)num=0;{case0xee:}key=0;}break;case0xde:例4.2.1实验班上电时,数码管不显示,顺序按下key=1;break;矩阵键盘后,数码管上依次显示0~F,六个数码管case0xbe:key=2;同时静态显示即可。,part2.2_2.cP87,break;case0x7e:#include<reg52.h>//52系列单片机头文件key=3;#defineucharunsignedcharbreak;#defineuintunsignedint}while(temp!=0xf0)sbitdula=P2^6;//申明U1锁存器的锁存端{temp=P3;申明U2锁存器的锁存端sbitwela=P2^7;//temp=temp&0xf0;ucharcodetable[]={}0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,display(key);0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};}voiddelayms(uintxms)}{P3=0xfd;uinti,j;temp=P3;temp=temp&0xf0;for(i=xms;i>0;i--)//i=xms即延时约xms毫秒if(temp!=0xf0)for(j=110;j>0;j--);{}delayms(10);voiddisplay(ucharnum)temp=P3;temp=temp&0xf0;{P0=table[num];//显示函数只送段选数据if(temp!=0xf0)dula=1;{dula=0;temp=P3;}switch(temp)voidmatrixkeyscan(){{case0xed:uchartemp,key;key=4;P3=0xfe;break;temp=P3;case0xdd:temp=temp&0xf0;key=5;if(temp!=0xf0)break;{delayms(10);case0xbd:temp=P3;key=6;temp=temp&0xf0;break;if(temp!=0xf0)case0x7d:{temp=P3;key=7;1213单片机知识点周冰break;temp=temp&0xf0;}if(temp!=0xf0)while(temp!=0xf0){{delayms(10);temp=P3;temp=P3;temp=temp&0xf0;temp=temp&0xf0;}if(temp!=0xf0)display(key);{temp=P3;}switch(temp)}{P3=0xfb;case0xe7:temp=P3;key=12;temp=temp&0xf0;break;if(temp!=0xf0)case0xd7:{key=13;delayms(10);break;temp=P3;case0xb7:temp=temp&0xf0;key=14;if(temp!=0xf0)break;{case0x77:temp=P3;key=15;switch(temp)break;{}case0xeb:while(temp!=0xf0)key=8;{temp=P3;break;temp=temp&0xf0;case0xdb:}key=9;display(key);break;}case0xbb:}key=10;}break;voidmain()case0x7b:{key=11;P0=0;//关闭所有数码管段选break;}dula=1;while(temp!=0xf0)dula=0;{P0=0xc0;//位选中所有数码管temp=P3;temp=temp&0xf0;wela=1;}wela=0;display(key);while(1)}{}matrixkeyscan();//不停调用键盘扫描程序P3=0xf7;temp=P3;}1314单片机知识点周冰}示,防止打开位选锁存时例5.3.1用单片机控制ADC0804进行数模转换,wela=1;//原来段选数据通过位选锁存当拧动实验板上A/D旁边的电位时,在数码管的器造成混乱前三位以十进制方式显示出A/D转换后的数字量P0=0x7e;//送位选数据,8位A/D转换后数值在0~255变化,。,part2.3_1.cwela=0;delayms(5);//延时P107,dula=1;#include<reg52.h>//52系列单片机头文件P0=table[shi];#include<intrins.h>dula=0;#defineucharunsignedcharP0=0xff;#defineuintunsignedintwela=1;P0=0x7d;sbitdula=P2^6;//申明U1锁存器的锁存端wela=0;delayms(5);sbitwela=P2^7;//申明U2锁存器的锁存端dula=1;P0=table[ge];sbitadwr=P3^6;//定义AD的WR端口dula=0;P0=0xff;sbitadrd=P3^7;//定义AD的RD端口wela=1;ucharcodetable[]={P0=0x7b;0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,wela=0;0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};delayms(5);voiddelayms(uintxms)}{voidmain()//主程序uinti,j;{uchara,A1,A2,A3,adval;for(i=xms;i>0;i--)//i=xms即延时约xms毫秒wela=1;for(j=110;j>0;j--);P0=0x7f;//置CSAD为0,选通}voiddisplay(ucharbai,ucharshi,ucharge)//显示子ADCS以后不必再管ADCSwela=0;函数while(1){{dula=1;adwr=1;_nop_();P0=table[bai];//送段选数据adwr=0;//启动AD转换dula=0;_nop_();P0=0xff;//送位选数据前关闭所有显adwr=1;1415单片机知识点周冰for(a=10;a>0;a--)//TX-1C实验板AD工作4种工作方式(方式0-方式3)。频率较低,所以启动转换后要多留点时间用来转换T0和T1的控制与状态寄存器{//这里把显示部分放这里的原因也是为TMOD,选择定时器/计数器T0、T1的工作模式和了延长转换时间工作方式。display(A1,A2,A3);T1的启动和停止计数,同时包TCON,控制T0、}P1=0xff;//读取P1口之前先给其写全1含了T0、T1的状态。adrd=1;//选通ADCS_nop_();adrd=0;//AD读使能_nop_();adval=P1;//AD数据读取赋给P1口adrd=1;单片机复位时,两个寄存器的所有位都被清0。A1=adval/100;//分出百,十,和个位【1】工作模式寄存器TMODA2=adval%100/10;A3=adval%10;}}AT89S52的定时器/计数器8位分为两组,高4位控制T1,低4位控制T0。软件和硬件定/延时方式,硬件定/延时是通过单片1,GATE——门控位机内部硬件定时器/计数器,优点,不占用CPU时0,以TRX,X=0,1,来启动定时器/计数器运行。间。3个可编程的定时器/计数器T0、T1、T2。1,用外中断引脚(INT0*或INT1*)上的高电平和定时器/计数器基本原理定时器/计数器核心,16位的加1计数器。由2个TRX来启动定时器/计数器运行。8位计数器,TH、TL,组成。,2,M1、M0——工作方式选择位两种工作模式,M1M0工作方式,1,计数器工作模式00方式0,13位定时器/计数器。,2,定时器工作模式01方式1,16位定时器/计数器。1516单片机知识点周冰10方式2,8位常数自动重新装载为P3.4、P3.5引脚上的外部输入脉冲,当引脚上11方式3,仅适用于T0,T0分成两个8发生负跳变时,计数器加1。位计数器,T1停止计数。GATE位,决定定时器/计数器的运行取决于TRX(3)C/T*——计数器模式和定时器模式选择位一个条件还是TRX和INTX*引脚两个条件。,定时器模式。1,0,A点是否计数,仅取决于TRX的状态。0,1,计数器模式。,2,1,B点电位由INTX*的输入电平和TRX的【2】定时器/计数器控制寄存器TCON状态这两个条件来确定。是否计数是由TRX和INTX*二个条件来控制的。低4位与外部中断有关,外部中断0,外部中断1。高4位的功能如下,定时时间(1)TF1、TF0——计数溢出标志位计数初值(2)TR1、TR0——计数运行控制位1,启动定时器/计数器工作2方式1M1、M0=01,16位的计数器。0,停止定时器/计数器工作13T0和T1的4种工作方式(2X)12,,t,1方式0fosctf,13oscX2,,M1、M0为00,定时器/计数器的框图,12定时时间计数初值为13位的计数器,C/T*位决定工作模式,16(2X)12,,3方式2t,0,开关打在上面,为定时器工作模式,fosc计数满后自动装入计数初值。1,开关打在下面,为计数器工作模式,计数脉冲tf,16oscX2,,M1、M0=10,等效框图如下,121617单片机知识点周冰TF1,同时占用定时器T1的中断请求源TF1。各引脚与T0的逻辑关系如图所示,TLX作为常数缓冲器,当TLX计数溢出时,在置“1”溢出标志TFX的同时,还自动的将THX中的初值送至TLX,使TLX从初值开始重新计数。定时器/计数器的方式2工作过程下图所示,T0工作在方式3下,T1的各种工作方式(X=0,1)。2T0处于方式3时,T1可定为方式0、方式1省去用户软件中重装初值的和方式2程序,精确的定时。,用来作为串行口的波特率发生器,或不4方式3需要中断的场合。增加一个附加的8位定时器,1,T1工作在方式0/计数器,从而具有3个定时器/计数器。只适用于定时器/计数器T0。T1不能工作在,2,T1工作在方式1方式3,T1方式3时相当于TR1=0,停止计数。1,工作方式3下的T0T0分为两个独立的8位计数器:TL0和TH0。,3,T1工作在方式2TL0使用T0的状态控制位C/T*、GATE、TR0,而TH0被固定为一个8位定时器,不能作外部计数模式,,并使用定时器T1的状态控制位TR1和1718单片机知识点周冰率。AT89S52的中断系统AT89S52中断系统的结构实时测控,单片机能及时地响应和处理单片机有8个中断请求源,两个中断优先级,可两级嵌套。中断系统结构示意图如下图所示。外部事件或内部事件所提出的中断请求。中断的概念CPU正在执行程序时,单片机外部或内部发生的某一事件,请求CPU迅速去处理。CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事件。处理完该事件后,再回到原来被中止的地方,继续原来的工作,这称为中断。CPU处理事件的中断请求源过程,称为CPU的中断响应过程。八个中断请求源,P50表2-21,,对事件的整个处理过程,称为中断处理,或中,1,INT0*—外部中断请求0,由引脚INT0*输入,断服务,。中断请求标志为IE0。,2,INT1*—外部中断请求1,由引脚INT1*输入,中断请求标志为IE1。,3,定时器/计数器T0溢出中断请求,中断请求标志为TF0。,4,定时器/计数器T1溢出中断请求,中断请求能够实现中断处理功能的部件称为中断系统,标志为TF1。产生中断的请求源称为中断请求源。,5,串行口中断请求,中断请求标志为TI或RI。中断源向CPU提出的处理请求,称为中断请,6,定时器/计数器T2溢出中断请求,中断请求求(或中断申请)。标志TF2。定时器/计数器T2捕获中断请求,中中断方式优点,大大地提高了CPU的工作效1819单片机知识点周冰断请求标志EXF2。“1”TF0,向CPU申请中断,CPU响应TF0中断时,TCON为定时器/计数器的控制寄存器,字节地址清“0”TF0,TF0也可由软件清0。6,TF1—T1的溢出中断请求标志位,功能和TF0为88H。包含,,,T0和T1的溢出中断请求标志位TF1和TF0类似。,1,外部中断请求标志位IE1与IE0。格式如下,2TR1、TR02个位与中断无关。当MCS-51复位后,TCON被清0,则CPU关所示,中断,所有中断请求被禁止。外部中断的触发方式选择各标志位的功能,两种触发方式,电平触发方式和跳沿触发方式。,1,IT0—选择外部中断请求0为跳沿触发方式还、电平触发方式1CPU在每个机器周期采样到的外部中断输入线的是电平触发方式,IT0=0,为电平触发方式。电平。在中断服务程序返回之前,外部中断请求输IT0=1,为跳沿触发方式。入必须无效,即变为高电平,,否则CPU返回主程可由软件置“1”或清“0”。序后会再次响应中断。,2,IE0—外部中断请求0的中断请求标志位。适于外中断以低电平输入且中断服务程序能清除IE0=0,无中断请求。外部中断请求,即外部中断输入电平又变为高电IE0=1,外部中断0有中断请求。当CPU响应平,的情况。该中断,转向中断服务程序时,由硬件清“0”IE0。2、跳沿触发方式,3,IT1—外部中断请求1为跳沿触发方式还是电连续两次采样,一个机器周期采样到外部中断输入平触发方式,意义与IT0类似。为高,下一个机器周期采样为低,则置“1”中断请,4,IE1—外部中断请求1的中断请求标志位,意求标志,直到CPU响应此中断时,该标志才清0。义与IE0类似。这样不会丢失中断,但输入的负脉冲宽度至少保持,5,TF0—T0溢出中断请求标志位。1个机器周期。T0计数后,当最高位产生溢出时,由硬件置SCON为串行口控制寄存器,字节地址为98H。1920单片机知识点周冰串行口的发送中断和接收中断的中断请求标志TIIE中各位的功能如下,和RI,格式如下,,1,EA,中断允许总控制位,CPU屏蔽所有的中断请求(CPU关中断),01,CPU开放所有中断(CPU开中断)。2,ES,串行口中断允许位各标志位的功能,,,1,TI—发送中断请求标志位。串口每发送完一0,禁止串行口中断,帧串行数据后,硬件自动置“1”TI。必须在中断服1,允许串行口中断。务程序中用软件对TI标志清“0”。,3,ET1,定时器/计数器T1的溢出中断允许位,RI—接收中断请求标志位。串口接收完一个,20,禁止T1溢出中断,数据帧,硬件自动置“1”RI标志。必须在中断服务1,允许T1溢出中断。程序中用软件对RI标志清“0”。,4,EX1,外部中断1中断允许位中断控制0,禁止外部中断1中断,1中断允许寄存器IE1,允许外部中断1中断。CPU对中断源的开放或屏蔽,由片内的中断允,5,ET0,定时器/计数器T0的溢出中断允许位许寄存器IE控制。字节地址为A8H,可位寻址。0,禁止T0溢出中断,格式如下,1,允许T0溢出中断。,6,EX0,外部中断0中断允许位。IE对中断的开放和关闭为两级控制0,禁止外部中断0中断,总的开关中断控制位EA,IE.7位,:1,允许外部中断0中断。EA=0,所有中断请求被屏蔽。2中断优先级寄存器IPEA=1,CPU开放中断,但五个中断源的中断请两个中断优先级,可实现两级中断嵌套。如下图示。求是否允许,还要由IE中对应的5个中断请求允许控制位的状态来决定。2021单片机知识点周冰0,低优先级中断。,4,PT0——定时器T0中断优先级控制位一个正在执行的低优先级中断程序能被高优先级1,高优先级中断,0,低优先级中断。的中断源所中断,但不能被另一个低优先级的中断,5,PX0——外部中断0中断优先级控制位源所中断。若CPU正在执行高优先级的中断,则不能被任何中断源所中断。1,高优先级中断,可归纳为下面两条基本规则,0,低优先级中断。,1,低优先级可被高优先级中断,反之则不能。在同时收到几个同一优先级的中断请求时,,同级中断不会被它的同级中断源所中断。中断级别,2中断源某一中断源被设置为高优先级中断,则不能被任何外部中断0最高其它的中断源的中断请求所中断。T0溢出中断中断优先级寄存器IP,其字节地址为B8H。外部中断1T1溢出中断串行口中断最低响应中断请求的条件IP各个位的含义,一个中断请求被响应,需满足以下必要条件,,1,PS——串行口中断优先级控制位,1,IE寄存器中的中断总允许位EA=1。1,高优先级中断,,2,该中断源发出中断请求,即该中断源对应的0,低优先级中断。中断请求标志为“1”。,2,PT1——定时器T1中断优先级控制位,3,该中断源的中断允许位=1,即该中断没有被1,高优先级中断,屏蔽。0,低优先级中断。,4,无同级或更高级中断正在被服务。,3,PX1——外部中断1中断优先级控制位1,高优先级中断,中断响应是有条件的,遇到下列三种情况之一时,2122单片机知识点周冰中断响应被封锁,11.0592MHZ。,1,CPU正在处理同级的或更高优先级的中断。,2,状态周期:每个状态周期为时钟周期的22,所查询的机器周期不是所当前正在执行指令,是振荡周期经二分频后得到的。,倍的最后一个机器周期。只有在当前指令执行完毕,3,机器周期:一个机器周期包含6个状态周期后,才能进行中断响应。12个时钟周期。在一个机器周期S1~S6,也就是,3,正在执行的指令是RETI或是访问IE或IP内,CPU可以完成一个独立的操作。的指令。需要再去执行完一条指令,才能响应新的,4,指令周期:它是指CPU完成一条操作所需的中断请求。全部时间。每条指令执行时间都是有一个或几个机器周期组成。MCS-51系统中,有单周期指令、如果存在上述三种情况之一,CPU将丢弃中断查询结果,不能对中断进行响应。双周期指令和四周期指令。】外部中断的响应时间接着再执行一条指令,按最长指令,乘法指令MUL外部中断的最短的响应时间为3个机器周期:和除法指令DIV,来算,也只有4个机器周期。加,1,中断请求标志位查询占1个机器周期。上硬件子程序调用指令LCALL的执行,需要2个,2,子程序调用指令LCALL转到相应的中断服机器周期。所以,外部中断响应最长时间为8个机务程序入口,需2个机器周期。器周期。外部中断响应的最长时间为8个机器周期,如果已在处理同级或更高级中断,响应时间无法计发生在CPU进行中断标志查询时,刚好是开始算。执行RETI或是访问IE或IP的指令,则需把当前在一个单一中断的系统里,单片机对外部中断请求指令执行完再继续执行一条指令后,才能响应中的响应的时间总是在3,8个机器周期之间。断,最长需2个机器周期。写程序首先来了解程序的格式,,1,振荡周期:也称时钟周期,是指为单片机提供void函数名()interruptm[usingn]时钟脉冲信号的振荡源的周期,TX实验板上为{}2223单片机知识点周冰关键字interruptm[usingn]表示这是一个中T1,001BH3断函数串口,0023H4m为中断源的编号,有五个中断源,取值为中断向量,中断入口地址,=中断号x8+30,1,2,3,4,中断编号会告诉编译器中断程序的入口前面m意思很清楚,不同的m值表示这个函地址,执行该程序时,这个地址会传个程序计数器数是针对不同的中断源,比如m为1是表示它是PC,于是CPU开始从这里一条一条的执行程序指定时器0的中断函数,令。如voidtime0,,interrupt1{}n为单片机工作寄存器组,又称通用寄存器那么后面的usingn又是什么意思呢,在正组,编号,共四组,取值为0,1,2,3在执行一个特定任务时,有更紧急的事情需要中断号中断源CPU来处理,涉及到中断优先权。高优先权中断0外部中断0低优先权正在处理的程序,所以最好给每个优先程1定时器0序分配不同的寄存器组。2外部中断1CPU正在处理某个事件,突然另外一个事件3定时器1中断需要处理,于是进入中断后,而你不想将现在执行4串行口中断的程序的各寄存器状态入栈,那么可以把这个中断这5个中断源的中断入口地址为,,在上一篇程序放入另一个寄存器组,如切换到1组,然后退文章中讲到的ROM前43个存储单元就是他们,出中断时,再切回到0组,原来的程序在0组,。这40个地址用来存放中断处理程序的地址单元,为了更好的了解这里意思,你可以看看工作寄存器每一个类中断的存储单元只有8B,显然不是中断组的作用是什么。处理的程序,而是存放着中断处理程序的真正地下面的注意事项转自网络上其他朋友的文章址,INT0,0003H0,整理下,重复的去掉了,写的非常好,,T0,000BH1,1,中断函数不能进行参数传递INT1,0013H22324单片机知识点周冰,2,中断函数没有返回值做有很多好处。首先系统对中断的反应面更宽了,,3,在任何情况下都不能直接调用中断函数有些系统如果丢失中断或对中断反应太慢将产生4,中断函数使用浮点运算要保存浮点寄存,十分严重的后果,这时有充足的时间等待中断是十器的状态。分重要的。其次它可使中断服务程序的结构简单,,5,如果在中断函数中调用了其它函数,则不容易出错。中断程序中放入的东西越多,他们之被调用函数所使用的寄存器必须与中断函数相同,间越容易起冲突。简化中断服务程序意味着软件中被调函数最好设置为可重入的。将有更多的代码段,但可把这些都放入主程序中。,6,C51编译器对中断函数编译时会自动在中断服务程序的设计对系统的成败有至关重要的程序开始和结束处加上相应的内容,具体如下,在作用,要仔细考虑各中断之间的关系和每个中断执程序开始处对ACC、B、DPH、DPL和PSW入栈,行的时间,特别要注意那些对同一个数据进行操作结束时出栈。中断函数未加usingn修饰符的,开的ISR.例#include<reg52.h>始时还要将R0~R1入栈,结束时出栈。如中断函sbitm=P2^0;sbitb=P2^6;数加usingn修饰符,则在开始将PSW入栈后还要sbity=P2^7;unsignedcharcount;修改PSW中的工作寄存器组选择位。voidmain(){TMOD=0x01;,7,C51编译器从绝对地址8m+3处产生一TH0=(65536-50000)/256;TL0=(65536-50000)%256;个中断向量,其中m为中断号,也即interrupt后TR0=1;ET0=1;面的数字。该向量包含一个到中断函数入口地址的EA=1;count=0;绝对跳转。while(1){},8,中断函数最好写在文件的尾部,并且禁}voidtimer()interrupt1止使用extern存储类型说明。防止其它程序调用。{count++;if(count>40)count=0;,9,在设计中断时,要注意的是哪些功能应if(count<=20){m=0;b=1;y=0;该放在中断程序中,哪些功能应该放在主程序中。}else{一般来说中断服务程序应该做最少量的工作,这样m=1;b=0;y=1;2425单片机知识点周冰}传输,但两个方向的数据传输不能同时进行。TH0=(65536-50000)/256;TL0=(65536-50000)%256;(3)全双工,可同时进行数据收/发的工作方式。}串行通信CS-51的串行口全双工的异步通讯串行口数据通信,计算机之间以及计算机与其他设备4种工作方式,波特率由片内定时器/计数器之间的信息交换。两种方式,串行通信和并行通信。,串行通信,数据的各位按一定的顺序逐位分控制。,1时传送。优点,只需要一对数据线,成本低,适合每发送或接收一帧数据,均可发出中断请求。远距离通信。除用于串行通讯,还可用来扩展并行I/O口。(2)并行通信,数据的各位同时传送。优点,速度1串行口的结构快。缺点,数据有多少就要多少根数据线,成本高,串行口内部结构如下图,两个物理上独立地接抗干扰能力降低。收和发送缓冲器,可同时收、发数据。1串行通信的通信方式两个缓冲器共用一个特殊功能寄存器字节地(1)同步通信址,SBUF,99H,。基本特征是,发送和接收时钟保持严格同步。控制寄存器共两个,特殊功能寄存器SCON信息开始时加同步字符,没有信息时填空字符。和PCON。分为,面向字符型和面向位型,串行口控制寄存器SCON面向字符型有单同步、双同步和外同步。字节地址98H,可位寻址,格式如图所示。(2)异步通信帧格式数据组成,起始位、数据位、奇偶校验位和停止位。2串行通信的传输方式,1,SM0、SM1——串行口4种工作方式的选择单工、半双工、全双工三种位(1)单工,数据只能单方向传输。SM0SM1方式功能说明(2)半双工,通信双方能交替地进行双向数据000同步移位寄存器方式,用于扩展I/O口,2526单片机知识点周冰0118位异步收发,波特率可变,由定时器控制,作为奇偶校验位使用,也可作为地址帧或数据帧的1029位异步收发,波特率为fosc/64或fosc/32标志。1139位异步收发,波特率可变,由定时器控制,=1为地址帧,=0为数据帧,2,SM2——多机通信控制位,5,RB8——接收到的第9位数据方式2和3时,RB8存放接收到的第9位数据。用于方式2或方式3中。当串行口以方式2或方式3接收时,在方式1,如果SM2=0,RB8是接收到的停止位。如果SM2=1,只有当接收到的第9位数据,RB8,在方式0,不使用RB8。为“1”时,才将接收到的前8位数据送入SBUF,,6,TI——发送中断标志位并置“1”RI,产生中断请求,当接收到的第9位数方式0时,串行发送第8位数据结束时由硬件置据,RB8,为“0”时,则将接收到的前8位数据丢“1”,弃。其它工作方式,串行口发送停止位的开始时置“1”。如果SM2=0,则不论第9位数据是“1”还是“0”,TI=1,表示一帧数据发送结束,可供软件查询,也都将前8位数据送入SBUF中,并置“1”RI,产生可申请中断。CPU响应中断后,在中断服务程序中中断请求。向SBUF写入要发送的下一帧数据。TI必须由软在方式1时,如果SM2=1,则只有收到停止位件清0。时才会激活RI。,7,RI——接收中断标志位在方式0时,SM2必须为0。方式0时,接收完第8位数据时,RI由硬件置1。,3,REN——允许串行接收位其它工作方式,串行接收到停止位时,该位置“1”。由软件置“1”或清“0”。RI=1,表示一帧数据接收完毕,并申请中断,要求REN=1允许串行口接收数据。CPU从接收SBUF取走数据。该位的状态也可供REN=0禁止串行口接收数据。软件查询。RI必须由软件清“0”。,4,TB8——发送的第9位数据,特殊功能寄存器PCON方式2和3时,TB8是要发送的第9位数据,可字节地址为87H,没有位寻址功能。2627单片机知识点周冰方式0接收时,REN为串行口允许接收控制位。REN=0,禁止接收。SMOD,波特率选择位。例如,方式1的波特率的计算公式为,2SMOD/32,×定时器T1的溢方式1波特率=,出率当SMOD=1时,要比SMOD=0时的波特率加倍,REN=1,允许接收。当CPU向串行口的SCON也称SMOD寄存器写入控制字,置为方式0,并置“1”REN位,位为波特率倍增位。同时RI=0,时,产生一个正脉冲,串行口即开始串行口的4种工作方式接收数据。引脚RXD为数据输入端,TXD为移位,方式0脉冲信号输出端,接收器也以fosc/12的固定波特同步移位寄存器输入输出方式,常用于外接移位率采样RXD引脚的数据信息,当接收到8位数据寄存器,以扩展并行I/O口。时置“1”中断标志RI。表示一帧数据接收完毕,可8位数据为一帧,不设起始位和停止位,先发送或进行下一帧数据的接收。时序如下图,接收最低位。波特率固定为fosc/12。帧格式如下,1,方式0发送当CPU执行一条将数据写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口即把SBUF方式0下,SCON中的TB8、RB8位没有用到,发中的8位数据以fosc/12的固定波特率从RXD引送或接收完8位数据由硬件置“1”TI或RI中断标脚串行输出,低位在先,TXD引脚输出同步移位脉志位,CPU响应中断。TI或RI标志位须由用户软冲,发送完8位数据置“1”中断标志位TI。时序如件清“0”,可采用如下指令,图所示。CLRTI,TI位清“0”2,方式0接收CLRRI,RI位清“0”2728单片机知识点周冰方式0时,SM2位,多机通讯控制位,必须为0。“1”中断标志位TI,然后失效。方式1发送数据的,方式1时序,如图所示。SM0、SM1=01。用于数据的串行发送和接收。TXD脚和RXD脚分别用于发送和接收数据。方式1收发一帧的数据为10位,1个起始位,0,,8个数据位,1个停止位,1,,先发送或接收最低2,方式1接收位。帧格式如图所示。数据从RXD,P3.0,引脚输入。当检测到起始位的负跳变时,则开始接收。定时控制信号有波特率由下式确定,两种,如图所示,,一种是接收移位时钟,RX时方式1波特率=,2SMOD/32,×定时器T1的溢钟,,它的频率和传送的波特率相同。另一种是位出率检测器采样脉冲,它的频率是RX时钟的16倍。SMOD为PCON寄存器的最高位的值,0或1,。也就是在1位数据期间,有16个采样脉冲,以波1,方式1发送特率的16倍的速率采样RXD引脚状态,当采样方式1输出时,数据位由TXD端输出,一到RXD端从1到0的跳变时就启动检测帧信息为10位,1位起始位0,8位数据位,先低位,和1位停止位1。当CPU执行一条数据写发送缓冲器SBUF的指令,就启动发送。图中TX时钟的频率就是发器,接收的值是3次连续采样,以确认是否是真正送的波特率。发送开始时,内部发送控制信号变为的起始位,负跳变,的开始。有效。将起始位向TXD输出,此后,每经过一个当一帧数据接收完毕以后,必须同时满足以下两TX时钟周期,便产生一个移位脉冲,并由TXD个条件,这次接收才真正有效。输出一个数据位。8位数据位全部发送完毕后,置?RI=0,即上一帧数据接收完成时,RI=1发出的2829单片机知识点周冰中断请求已被响应,SBUF中的数据已被取走,说2,方式2接收明“接收SBUF”已空。SM0、SM1=10,且REN=1。数据由RXD端输SM2=0或收到的停止位=1,方式1时,停止位?入,接收11位信息。当位检测逻辑采样到RXD已进入RB8,,则收到的数据装入SBUF和RB8引脚从1到0的负跳变,并判断起始位有效后,便,RB8装入停止位,,且置“1”中断标志RI。开始接收一帧信息。在接收器完第9位数据后,需若这两个条件不同时满足,收到的数据不能装入满足以下两个条件,才能将接收到的数据送入SBUF,该帧数据将丢失。SBUF。,方式2,1,RI=0,意味着接收缓冲器为空。2,SM2=0或接收到的第9位数据位RB8=1时。9位异步通信接口。每帧数据均为11位,1位起,始位0,8位数据位,先低位,,1位可程控的第9当上述两个条件满足时,接收到的数据送入SBUF位数据和1位停止位。帧格式见下图。,接收缓冲器,,第9位数据送入RB8,并置“1”RI。若不满足这两个条件,接收的信息将被丢弃。方式2的波特率由下式确定,串行口方式2接收数据的时序波形如图所示。方式2波特率=,2SMOD/64,×fosc1,方式2发送发送前,先根据通讯协议由软件设置TB8,例如,,方式3双机通讯时的奇偶校验位或多机通讯时的地址/数当SM0、SM1=11,串行口工作在方式3。方据的标志位,。式3为波特率可变的9位异步通讯方式,除波特率方式2发送数据波形如图所示。外,方式3和方式2相同。方式3发送和接收数据的时序波形见方式2的图。方式3的波特率由下式确定,方式3波特率=,2SMOD/32,×定时器T1的2930单片机知识点周冰溢出率多机通讯工作过程,多机通讯多个MCS-51单片机可利用串行口可进行多机,1,从机串行口编程为方式2或方式3接收,且通讯。要保证主机与所选择的从机实现可靠地通置“1”SM2和REN位,使从机只处于多机通讯且接讯,必须保证串行口具有识别功能。收地址帧的状态。,2,在主机先将从机地址,即准备接收数据的从串行口控制寄存器SCON中的SM2位就是满足这一条件而设置的多机通讯控制位。原理是在串行机,发送给各从机,接着才传送数据或命令,主机口以方式2,或方式3,接收时,若SM2=1,表示发出的地址信息的第9位为1,数据,包括命令,置多机通讯功能位,这时出现两种可能情况,信息的第9位为0。当主机向各从机发送地址时,1,接收到的第9位数据为1时,数据才装各从机的串行口接收到的第9位信息RB8为1,,入SBUF,并置中断标志RI=1向CPU发出中断请且由于SM2=1,则置“1”中断标志位RI,各从机8031求,,2,接收到的第9位数据为0时,则不产生中响应中断,执行中断服务程序。在中断服务子程序断标志,信息将抛弃。中,判主机送来的地址是否和本机地址相符合,若若SM2=0,则接收的第9位数据不论是0还为本机地址,则该从机清“0”SM2位,准备接收主是1,都产生RI=1中断标志,接收到的数据装入机的数据或命令,若地址不相符,则保持SM2=1SBUF中。状态。应用上述特性,便可实现MCS-51的多机通讯。3,接着主机发送数据帧,此时各从机串行口接收设多机系统中有一主机和3个8031从机,如下图。到的RB8=0,只有与前面地址相符合的从机系统主机的RXD与所有从机的TXD端相连,TXD与,即已清“0”SM2位的从机,才能激活中断标志所有从机的RXD端相连。从机的地址分别为00H、位RI,从而进入中断服务程序,在中断服务程序01H和02H。中接收主机的数据,或命令,,其它的从机因SM2保持为1,又RB8=0不激活中断标志RI,不能进入中断,所接收的数据丢失不作处理,从而保证主3031单片机知识点周冰机和从机间通讯的正确性。MCS-51单片机扩展存储器的设计波特率的制定方法概述方式0和方式2的波特率是固定的,方式1和方片内的资源如不满足需要,需外扩存储器和I/O功式3波特率可由定时器T1的溢出率来确定。能部件,系统扩展问题,内容主要有,波特率的定义定义,串行口每秒钟发送,或接收,的位数称为波(1)外部存储器的扩展,外部存储器又分为外部程特率。序存储器和外部数据存储器,对于定时器的不同工作方式,得到的波特率的范(2)I/O接口部件的扩展。围不一样,因为,计数位数的不同。系统扩展的首要问题:定时器T1产生波特率的计算构造系统总线,然后再往系统总线上“挂”存储器,1,方式0,波特率固定为时钟频率fosc的1/12,芯片或I/O接口芯片,“挂”存储器芯片就是存储器且不受SMOD位的值的影响。若fosc=12MHz,波扩展,“挂”I/O接口芯片就是I/O扩展。特率为fosc/12即1Mb/s。MCS-51由于受引脚,2,方式2,波特率与SMOD位的值有关。数目的限制,数据线方式2波特率=,2SMOD/64,×fosc和低8位地址线复用若fosc=12MHz:SMOD=0波特率=187.5kb/s,。为了将它们分离出SMOD=1波特率=375kb/s来,需要外加地址锁3,串行口工作在方式1或方式3时,常用定时器存器,从而构成与一T1作为波特率发生器,其波特率为,般CPU相类似的片外波特率=,2SMOD/32,×T1的溢出率三总线,见右图。实际设定波特率时,T1常设置为方式2定时,自地址锁存器一般采用74LS373,采用74LS373的动装初值,这种方式不仅操作方便,也可避免因软地址总线的扩展电路如下图。件重装初值而带来的定时误差。T1的溢出率=fosc/12*(256-X)3132单片机知识点周冰择,“片选”和“单元选择”。存储器空间分配除考虑地址线连接外,还讨论各存储器芯片在整个存储空间中所占据的地址范围,常用的存储器地址分配的方法有两种,线性选1.以P0口作为低8位地址/数据总线。择法,简称线选法,和地址译码法,简称译码法,。2,以P2口的口线作高位地址线。1.线选法3.控制信号线。直接利用系统的高位地址线作为存储器芯*使用ALE信号作为低8位地址的锁存控制信号。片,或I/O接口芯片,的片选信号。优点,电路简单,不需要地址译码器硬件,体*以PSEN*信号作为扩展程序存储器的读选通信积小,成本低。号。缺点,可寻址的器件数目受到限制,地址空间*以EA*信号作为内外程序存储器的选择控制信号。不连续。*由RD*和WR*信号作为扩展数据存储器和I/O口例某一系统,需要外扩8KB的EPROM,2的读选通、写选通信号。片2732,,4KB的RAM,2片6116,,这些芯片与尽管MCS-51有4个并行I/O口,共32条口线,MCS-51单片机地址分配有关的地址线连线,电路但由于系统扩展需要,真正作为数据I/O使用的,如下图。就剩下P1口和P3口的部分口线。单片机系统的串行扩展技术优点,串行接口器件体积小,与单片机接口时需要的I/O口线很少,仅需3-4根,,提高可靠性。缺点:串行接口器件速度较慢存储器地址空间分配MCS-51发出的地址是用来选择某个存储器单元进行读写,要完成这种功能,必须进行两种选2732:4KB程序存储器,有12根地址线A0,3233单片机知识点周冰A11,分别与单片机的P0口及P2.0,P2.3口相连。出只有某一个固定的引脚输出为低电平,其余的为2732,1,的片选端接A15,P2.7,,2732,2,的高电平。片选端接A14,P2.6,。当要选中某个芯片时,单片机P2口对应的片选信号引脚应为低电平,其它引脚一定要为高电平。74LS138译码器真值表6116:2KB数据存储器,需要11根地址线作为输入输出G1G2A*G2B*CBAY7*Y6*Y5*Y4*Y3*Y2*Y1*Y0*单元的选择,而剩下的P2口线,P2.4,P2.7,作为片选线。两片程序存储器的地址范围,2732,1,的地址范围,7000H,7FFFH;2732,2,的地址范围:B000H,BFFFH;6116,1,的地址范围,E800H,EFFFH;(2)74LS139,双2-4译码器,引脚如下图。6116,2,的地址范围,D800H,DFFFH。线选法特点,简单明了,不需另外增加硬件电路。只适于外扩芯片不多,规模不大的单片机系统。2.译码法下面以74LS138为例,介绍如何进行地址分配。最常用的译码器芯片,74LS138,3-8译码器,例要扩8片8KB的RAM6264,如何通过74LS13874LS139,双2-4译码器,74LS154,4-16译码器,。把64KB空间分配给各个芯片,可根据设计任务的要求,产生片选信号。全译码,全部高位地址线都参加译码,部分译码,仅部分高位地址线参加译码。(1)74LS138,3,8译码器,当译码器的输入为某一个固定编码时,其输采用的是全地址译码方式,单片机发地址码时,每3334单片机知识点周冰次只能选中一个存储单元。同类存储器间不会产生一样,为绘制印刷电路板时的布线提供了方便。程序存储器的操作时序地址重叠的问题。1.访问程序存储器的控制信号外部地址锁存器1,ALE常用的地址锁存器芯片有:74LS373、8282、,,2,PSEN*74LS573等。,3,EA*1.锁存器74LS373带有三态门的8D锁存器,其引脚其内部结构如下如果指令是从片外EPROM中读取,ALE用图。于低8位地址锁存,PSEN*接外扩EPROM的OE*脚。P0口:分时低8位地址总线和数据总线,P2口:高8位地址线。2.操作时序2.锁存器8282(1)应用系统中无片外RAM功能及内部结构与74LS373完全一样,只是其引脚的排列与74LS373不同,8282的引脚如右图。引脚的排列为绘制(2)应用系统中接有片外RAM印刷电路板时的布线提供了方便。3,锁存器74LS573输入的D端和输出的Q端也是依次排在芯片的两侧,与锁存器82823435单片机知识点周冰由图(b)可看出,,1,将ALE用作定时脉冲输出时,执行一次MOVX指令就会丢失一个脉冲。,只有在执行MOVX指令时的第二个机器周,2各片62128地址分配见下表。期期间,地址总线才由数据存储器使用。各片62128地址分配程序存储器EPROM的扩展P2.6P2.7译码输出选中芯片地址范围存储容量采用只读存储器,非易失性。00YO*IC10000H-3FFFH16K,1,掩膜ROM01Y1*IC24000H-7FFFH16K10Y2*IC38000H-BFFFH16K在制造过程中编程。成本较高,因此只适合于大11Y3*IC4C000H-FFFFH16K综合扩展的硬件接口电路批量生产。例采用线选法扩展2片8KB的RAM和2片8KB,2,可编程ROM,PROM,的EPROM。RAM选6264,EPROM选2764。扩用独立的编程器写入。但PROM只能写入一次,展接口电路见下图。且不能再修改。,1,各芯片地址空间分配,3,EPROM,2,控制信号及片选信号电信号编程,紫外线擦除的只读存储器芯片。,4,E2PROM,EEPROM,电信号编程,电信号擦除的ROM芯片。读写操作与RAM几乎没有什么差别,只是写入的速度慢一些。但断电后能够保存信息。IC2和IC4占用地址空间为2000H,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理文书书写的常见问题及应对策略
- 护理中的数据结构与算法
- 直肠造口护理的临床
- 护理课件查阅培训制度
- 护理文献检索与证据实践
- 2026年食品行业有机农业报告
- 木梁拆除方案范本
- 酒店投入预算方案范本
- 项目借款清理方案范本
- 生成AIGC内容创作建议
- 2025宁波文旅会展集团有限公司招聘2人笔试参考题库附带答案详解(10套)
- 2025年新八年级道德与法治暑假提升讲义 第02讲 我们都是社会的一员(原卷版)
- 小学二年级下册体育期末复习计划
- 2024年全国乡村振兴职业技能大赛(餐厅服务)考试题库(含各题型)
- 精神病工娱治疗
- 《中国太平介绍》课件
- 中医全科(副高)高级职称考试题库及答案
- 2024年4月自考00067财务管理学答案及评分参考
- 中专《数学》(基础模块)上册80张课件
- 建筑设计公司绩效总方案
- 无菌模拟灌装工艺验证
评论
0/150
提交评论