1、CPU输入输出端口外部设备内总线MCS-51D Q 锁存器CL /QP0.x引脚Vcc地址/数据1/0控制(=0时)读锁存器读锁存器读引脚内部总线写锁存器MUX (控制=0时)Vcc返回前一次参见讲义235页硬件组成:1,一个输出锁存器(D型触发器)1. P0口的I/O操作(通用I/O端口)返回结构图返回结构图返回结构图(二)输入操作 MOV A,P0返回结构图返回结构图P0.X单片机的引脚设计为输出时返回结构图负载VccP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7返回结构图返回返回结构图D Q 锁存器CL /QP1.x引脚Vcc读锁存器读引脚内部总线写锁存器内部上拉电阻返
2、回返回前一次D Q 锁存器CL /QP2.x引脚Vcc地址/数据1/0控制读锁存器读引脚内部总线写锁存器MUX (地址/数据=0)内部上拉电阻返回上一次上一页返回D Q 锁存器CL /QP3.x引脚第二输出功能读锁存器读引脚内部总线写锁存器Vcc返回第二输入功能Px.yVddPx.yVddVdd灌电流方式输出”0”点亮LED拉电流方式输出高电平点亮LED返回Px.yVccPx.yVcc同相驱动反相驱动JVccVddPx.yAB注意:Vcc与Vdd是两套独立的电源系统返回本节返回本章目录继续20mS40mSMCS-51P x.y 输出波形MCS-51T0 ( T1) 端口外部脉冲外部设备P0口
3、MCS-51T0红外线扫描发射器红外线接收电路产品包装控制器产品生产线产品传送带CY计数脉冲CP溢出标志8位的加一计数器N位增量计数器TFN位初值寄存器系统内部时钟fosc启动控制 TR外部脉冲T0或T1引脚定时/计数控制C/T计数器溢出中断信号计数脉冲CPC/T=0C/T=1定时、计数时间到标志TH1 TL1震荡器1/12(8位)(低5位)TF1中断启动控制T1 引脚TR1GATEINT1高三位弃用C/T=0C/T=113位加1计数器TL1TH1震荡器1/12(8位)(8位)TF1中断启动控制T1 引脚TR1GATEINT1C/T=0C/T=116位加1计数器返回上一次TL1(8位)TH1(
4、8位)震荡器1/12TF1中断控制T1 引脚TR1GATEINT1C/T=1C/T=08位加1计数器8位初值寄存器TL0震荡器1/12TF0中断控制T0 引脚TR0GATEINT0C/T=0C/T=1TH0TF1中断控制TR1Fosc/12返回结构图TL0八位定时/计数器TH0八位定时器TL1TF0TF1将T0分解为两个计数器TL0:8位定时/计数器;TH0:8位定时器(借用TR1和TF1) T1(模式2)做波特率发生器。此种方式不用反复启动和查询标志返回结构图TH1TR0=1GATE=1/ INT001100启动计数器T max = 213 =8192T max = 216 = 65536T
5、 max= 28 =256T max=8192*1 =8.192msT max=65536* 1=65.536msT max=256*1 =0.256msT=(M-TC)t 其中,T: 定时时间,M: 计数器的模,TC:计数初值,t:计数器计数脉冲的周期(t = fosc/12)。定时/计数器1定时/计数器0结构图返回前一次返回前一次10ms5 ms5 msMCS-51P1.0TMOD 0000 0001TCON返回本节目录设定T0的模式启动T0设定定时初值TF0=1清标志CPL P1.0NY高8位TH0 低5位TL0MOV TH0,#60HMOV TL0,#18H【注意】低8位中的高三位用0
6、来填充,即00011000软件重装初值R0=0?NYCPL P1.02 S1S1SP1.020 R0R0-1R0RETIBRT0中断服务程序TMOD寄存器查询方式编程GATE计数器震荡器1/12TF0中断计数控制T0 引脚TR0GATEINT0C/T=0C/T=1 MCS-51 INT0 MCS-51INT0 SETB TR0 T0开始计数 计数停止 (TR0=1) (/INT0=1) (/INT0=0) 准备阶段 计数阶段 完成计数外部脉冲 MCS-51INT0 SETB TR0 T0开始计数 计数停止 (TR0=1) (/INT0=1) (/INT0=0) 准备阶段 计数阶段 完成计数外部
7、脉冲设定T1模式模式1,GATE=1TH1、TL1原始清零数据指针R0赋初值INT1=0?SETB TR1INT1=0?INT1=1?CLR TR1取TH、TL值NNN等待低电平Y准备计数等待高电平高电平是自动计数并等待低YY低电平时完成计数 返回本节目录3.3.0 单片机系统中的串行接口及特点返回上一页继续从机从机从机从机主机起始位停止位01MCS-51单片机的一个字符帧的格式主控方被控方dataclock主控方被控方dataclock主控方发送数据 主控方接收数据 发送方A接收方BTXDRXD发送方A接收方BTXDRXDTXDRXD发送方A接收方BTXDRXDTXDRXDMCS-51 TX
8、D(甲) RXD RXD MCS-51 TXD (乙)TXDRXDRXDTXDRS-232或485RS-232或485TXDRXDRS-232PC机COM1,COM2单片机甲乙之间近距离的直接通讯单片机甲乙两地之间远距离通讯单片机与PC机之间的数据通讯返回前一次接收SBUF 移位寄存器发送SBUF 移位寄存器内部总线CPUMCS-51RXDP3.0TXDP3.1返回前一次 D7 D6 D5 D4 D3 D2 D1 D0SCON寄存器SCON寄存器SCON寄存器SCON寄存器 D7 D6 D5 D4 D3 D2 D1 D0SCON寄存器CLR SCON .TI数据送累加器Amov sbuf,aT
9、I=1?N个数据发送完?YESNOYESNO发送数据的程序框图SETB SCON .RENmov a,sbufRI=1? N个数据接收完?YESNOYESNOCLR SCON .RI A送数据区返回本节目录一接收数据程序框图MCS-51RXDTXDData 外部移位寄存器cp移位脉冲串行数据并行的数据(8位)MCS-51P3.0P3.1P1.0 QA QHA,B 74LS164 /CLR CLK QA QHA,B 74LS164 /CLR CLK RXDTXD 共阳极LED数码管 . g f e d c b a 共阳极LED数码管 . g f e d c b a+5V51内部总线SBUF零检测
10、器移位时钟START SHIFT 发送控制器TXCLOCK TI SENDD S QCPSTART RI RECEIVERX 接收控制器 SHIFTCLOCK 1 1 1 1 1 1 1 0输入移位寄存器SBUF51内部总线读SBUF写SBUFS6串行口中断P3.0RXDP3.1TXD装载SBUFREN/RI返回前一次P3.0RXDMOV SBUF,A1S6P2写SBUFSENDD1D0D2D3D4D5D6D7RXD端数据SHIFTTXD端同步脉冲TI中断标志mov sbuf,a 指令送发送到结束的10个机器周期返回电路图返回电路图返回电路图返回电路图写SCON(RI=0)RECEIVESHI
11、FTRI对RXD采样TXD同步脉冲RI中断标志返回电路图起始位停止位01从TXD(P3.1)端发出的一个字符帧的格式TITXD起始位8位数据停止位对RXD线的数据以16倍速度采样当连续8次采集到低电平时,便确认起始位到来在每个第7,8,9个脉冲对RXD采样并采用“以三取二”来确定采集的数据返回本节目录二7.8.9RIRXD起始位8+1位数据停止位第9 位01返回本节目录二返回上一页起始位9位数据停止位返回上一次数据送累加器APSW.P=1 ?SET SCON.TB8CLR SCON.TB8MOV SBUF,ATI=1 ?CLR SCON.TIYESNONOYES发送端程序(原始TI=0)使用“
12、查询法”编制的发送、接收程序返回本节目录二RI=1 ?MOV A,SBUFPSW.P RB8=1?出错处理CLR SCON.RIYESNO接收端程序(原始RI=0)NY数据送内存单片机系统或微型计算机系统传感器 1传感器 2传感器 3传感器 4传感器 N接口电路引线(模拟信号) 机房 或 仪表室检测现场返回前一次主机从机 N从机 4从机 3从机 2从机 1返回前一次串行数据线(2条)RXDTXDTXDRXD从机做智能传感器返回多机图参见SM2位返回多机图返回本节目录二返回本节目录二* 当SMOD=1时,B=fosc/32;当SMOD=0时,B=fosc/64。溢出率)( 1322TSMOD返回
13、第一目录章返回本节目录二T1初始化启动T1串行口初始化输入数据到A发送一帧数据MOV SBUF,ATI=1?软件清TI设定定时器T1的工作模式 00000010B设定串行口模式寄存器SCON为01000000BYN程序实现功能:将P1端口输入的数据通过串行口发送出去。MCS-51TXDP1.7P1.0MCS-51RXD P1.7 P1.08路开关量输入8路开关量输出穿行口传输线SCON寄存器TMOD寄存器T1初始化启动T1串行口初始化输出数据到P1数据送AMOV A,SBUFRI=1?软件清RI定时器TMOD(89H)的工作模式 00000010B串行口模式寄存器SCON(98H)为01010
14、000BYNSCON寄存器0000H0023H0100H0200HT1初始化并启动T1串行口初始化开串行口中断等待RI中断输出数据到P1接收一帧数据MOV A,SBUF软件清RIRETI主程序框图中断服务程序框图设定中断允许寄存器IE(A8H)为10010000B返回本节目录开始停机设定串行口为方式2令波特率为fosc/32数据块首址送R0数据块长度送R2累加和寄存器R3=LEN调用发送子程序发送数据块长度TI=1CLR TI发送数据TI=1CLR TI求累加和数据指针加一R2-1R2R2=0保护现场NNYYNYCCRET发送累加和TI=1NCLR TI清除累加和寄存器R2恢复现场Y开始停机设
15、定串行口为方式3SMOD=1设定波特率为2400H数据块首址送R0累加和寄存器R3=0调用接收子程序RI=1CLR TI数据送R2求累加和ERRORRI=1CLR RI数据送RAM求累加和数据指针加一R2-1R2R2=0清除RINNYYNYCCRET 相等?NCLR TI比较累加和Y返回上一次数据送累加器APSW.P=1 ?SET SCON.TB8CLR SCON.TB8MOV SBUF,ATI=1 ?CLR SCON.TIYESNONOYES发送端程序RI=1 ?MOV A,SBUFPSW.P RB8=1?出错处理CLR SCON.RIYESNO接收端程序使用“查询法”编制的发送、接收程序N
16、Y数据送内存返回本节目录主机从机 N从机 4从机 3从机 2从机 1串行数据线(2条)主机可以与所有从机通讯,而从机之间不能通讯。返回上一次单片机系统或微型计算机系统传感器 1传感器 2传感器 3传感器 4传感器 N接口电路引线(模拟信号) 机房 或 仪表室检测现场0:合法命令 0:发送未就绪 0:接收未就绪1:非法命令 1:发送就绪 1:接收就绪从机返回的状态字返回上一次T1为定时,模式2B=1200,启动T1设串口为模式3REN=1,SM2=0TB8=1设定程序数据:R0R5停机MCOMMU从机应答?地址相符?发送命令字(TB8=0)从机应答?命令正确?命令分类从机接收就绪?从机发送就绪?
17、RET命令从机复位发FFHNNYYNNYYNNYY接收发送从机框图状态字调用MCOMMU接收数据块发送数据块发送从机地址从机返回的状态字0:合法命令 0:发送未就绪 0:接收未就绪1:非法命令 1:发送就绪 1:接收就绪控制字T1为定时,模式2B=1200,启动T1设串口为模式3REN=1,SM2=1TB8=1设定程序参数:R0R3开串行口中断动态停机等待主机发送地址码保护现场接收地址符合本机? 向主机回送本机地址接收下一字符是命令吗? 命令分类 本机发送准备就绪? 本机接收准备就绪? 发TRDY=1状态字发RRDY=1状态字发送数据接收数据发送完? 接收完? 保护现场返回NNYY发送命令接收
18、命令非法命令送TRDY=0送RRDY=0NNNY中断服务程序NY状态字主机框图接收FFH时三, 从机主程序(初始化)状态字状态字返回本节目录继续主程序断点中断响应中断返回中断服务程序状态好? 送一个字符NY中断服务程序送一个字符中断返回CPU采用查询方式为打印机服务CPU采用中断方式为打印机服务做某一的工作|主程序中断响应中断返回断点1断点2断点3/ int0T0/ int1T1ES中断源标识符高优先级中断请求中断矢量中断源标识符低优先级中断请求中断矢量中断标志寄存器中断允许寄存器IE中断优先级寄存器IP源允许总允许EA返回前一次返回本节目录返回本节目录返回前一次返回前一次返回本节目录转IP寄
19、存器IP寄存器返回本节目录返回前一次返回前一次0000H0003H000BH0013H001BH0023H返回本节目录程序存储器ROMMCS-51/INT0 /INT1 MCS-51 /INT 外部设备 T返回本节目录引脚图 MCS-51INTXP1 .0D QCP S外部设备D型触发器CLR P1.0SETB P1.0中断服务程序RETI服务程序主体返回上一次外设(CP)触发器QP1.0此电路还可以解决外部脉冲过窄,不能正确引发中断的情况。中断服务程序RETI中断处理程序外信号撤出?NY注:此表指使用中断服务程序来处理中断事件时的情况。如果采用查询的方法来处理事件时,都需要软件来清除标志。返
20、回本节目录电平锁存 中断查询 长调用 执行入口地址中的指令 保护断点,关闭CPU中断 转移到中断的入口地址返回前一次返回上一页中断协议20ms10ms10ms返回本节目录0000H000BHLJMP STARTT0矢量入口复位入口主程序2000HT0中断服务子程序ROM1000HLJMPT0INT 跳板指令软件重装初值R0=0?NYCPL P1.02 S1S1SP1.020 R0R0-1R0RETIBRT0中断服务程序返回本节目录TMOD寄存器中断方式编程设定定时器T1的工作模式 00000010B设定串行口模式寄存器SCON为01000000B程序实现功能:将P1端口输入的数据通过串行口发送出去。MCS-51TXDP1.7P1.0MCS-51RXD P1.7 P1.08路开关量输入8路开关量输出穿行口传输线SCON寄存器TMOD寄存器T1初始化启动T1串行口初始化输入数据到A发送一帧数据MOV SBUF,A等待中断主程序串口中断清标志TI输入数据到A发送一帧数据MOV SBUF,A中断返回返回本节目录
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。