文档详情

第三讲:IO中断,定时与串口.ppt

发布:2015-09-16约1.56万字共77页下载文档
文本预览下载声明
? 初值 X = 2n - 2SMOD ? fosc 32 ? 波特率 ? 12 ? 例P157中计算波特率的部分: 题目要求用T1工作于方式2来产生波特率1200, 已知晶振频率=12MHz。要求出T1的初值: 初值 X = 28 - 20 ? 12?106 32 ? 1200 ? 12 = 256 - = 256 - 26.04 12?106 460800 ? 230 = 0E6H ——结果后面要用到 ?表格有多种, 晶振也不止一种 常用波特率和T1初值查表 0D0H 2 0 0 11.0592MHz 600 0E8H 2 0 0 11.0592MHz 1200 0F4H 2 0 0 11.0592MHz 2400 0FAH 2 0 0 11.0592MHz 4800 0FDH 2 0 0 11.0592MHz 9600 0FFH 2 0 0 11.0592MHz 19200 0FDH 2 0 1 11.0592MHz 19200 初值 方式 C/T 定时器T1 SMOD位 (PCON中) fosc 串口波特率 (方式1,3) ?RxD引脚为接收端,TxD引脚为发送端,由波特率 发生器T1控制发送速度,不同于方式0:收/发都 需要由TxD送出移位时钟。 ?T1作波特率发生器时初始化包括: 选定时器工作方式2(TMOD选8位自动重装); 将计算(或查表)出的初值X赋给TH1,TL1; 启动T1 (SETB TR1); 对T1不要开中断 !! 工作方式1的接收/发送 P.117-121 ?串行口的初始化包括: 对SCON选工作方式 对PCON设波特率加倍位“SMOD”(缺省值=0) 如果是接收数据,仍要先置“1”REN位 SM0 SM1 SM2 REN TB8 RB8 TI R1 SCON ? SM0,SM1:串行口工作方式选择位。 0 1 :方式1,8位UART(1+8+1位) ? REN:串行口接收允许位。 REN=1 允许接收 串行口控制寄存器SCON 0 1 0 1 0 0 0 0 ? TB8,RB8,TI,RI等位由运行中间的情况 决定,可先写成 “0” ? SM2:串行口多机通信控制位,作为方式2、3 的附加控制位,此处不用,可写成“0” MAIN: ORG 0023H MOV TMOD,#20H SBR1:JNB RI,SEND MOV TL1,#0E8H ACALL SIN MOV TH1,#0E8H AJMP NEXT SETB TR1 SEND:ACALL SOUT MOV SCON, #50H NEXT:RETI SETB EA SIN: …… SETB ES RET LCALL SOUT SOUT:…… SJMP $ RET P117例:串行通信方式1应用 用T1工作于方式2,产生波特率1200bps,把R0单元的内容存入R1单元 发送子程序 接收子程序 SOUT: SIN: MOV A,R0 MOV A,SBUF MOV R1, A MOV SBUF, A CLR TI CLR RI RET RET P117例 (续) 工作方式2:——8 位自动重装的定时/计数器 振荡器 ?12 TLx (8位) TFx 申请中断 Tx端 TRx位 GATE位 INTx端 ≥1 C/T=0 C/T=1 控制 =1开关接通 或门 与门 THx (8位) 溢出位 门开 ? THx/TLx赋相同初值 在TLx计数达到0FFH 再加“1”时,TL0 将溢出,进位位直接进入“TFx”去申请 中断,同时打开三态门,使THx中的值 自动重装(Copy)进TLx 工作方式 2 的编程: ? TMOD寄存器选方式: 写“M1,M0” = 10 选中方式2 ? 其他用法与各种方式1完全相同
显示全部
相似文档