找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1841|回复: 4
收起左侧

大佬们,9600bps@11.0592MHz有没有定时器2程序,求分享

[复制链接]
ID:619615 发表于 2021-3-7 22:35 来自手机 | 显示全部楼层 |阅读模式
如题
回复

使用道具 举报

ID:390416 发表于 2021-3-8 00:22 | 显示全部楼层
定时器2 应该默认是对应串口2  ,89系列没有串口2
回复

使用道具 举报

ID:748788 发表于 2021-3-8 21:01 | 显示全部楼层
还要看具体的单片机,例如STC15W408AS有定时器0和定时器2,无定时器1。
回复

使用道具 举报

ID:858964 发表于 2021-3-8 22:50 | 显示全部楼层
晶振为11.0592MHZ,串行通信的波特率为9600bps民,定时器T1的工作方式2,波特率=((2的SMOD次方)x F)/(32x12x(256-N),

F是晶振频率,SMOD是特殊功能寄存器PCON的第7位,取1或0(波特率倍增,或不倍增)。
当SMOD取0,波特率=F/(32x12x(256-N)),

定时器初装值N =256-F/(波特率x32x12)=256-1105920/(9600x32x12)=253 ,即0FDh 即0xFD,
汇编语言程序如下:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INIT:                       ;初始化程
MOV        TMOD,#20H  ;定时器T1工作方式2(8位自动重载计数初值)
MOV   TH1,#0FDH   ;置入初装值
MOV  TL1,#0FDH     ;置入重装值
MOV           SCON, #70H   ;; 设定串口工作方式1,8位UART,接收允许
ANL           PCON, #00H   ;; 波特率不倍增
SETB           TR1                ;; 启动定时器T1
MOV           IE,   #0                ;; 禁止任何中断
CALL    DLY125           ;; 延时125ms

SETB  TR1                  ;启动T1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

T_X:                            ;;发送端的发送程序
MOV     R3, #9           ;; 待发送字符个数   
MOV     DPTR, #TAB_TX    ;; 数据表首址
TX_LP1:    CLR     A
MOVC    A,  @A+DPTR      ;; A←数据表的1个字符
CLR     TI               ;; TI清零,允许发送
MOV     SBUF,A           ;; 发送1个字符
JNB     TI,  $           ;; 等待1个字符帧发送结束
DJNZ    R3,  TX_next  
CALL    DLY500           ;; 延时500ms
JMP    T_X              ;; 重复发送
TX_next:                            ;; 发送另一字符
           INC     DPTR             ;; 数据表指针移动
           SJMP    TX_LP1  

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
R_X:                         ;; 接收端的接收程序
CLR     RI               ;; RI清零,允许接收字符
MOV     R3, #4           ;; 待接收字符个数
MOV     DPTR, #DAT_tab   ;; 数据表首址                    
RX_1chr:                          ;; 接收1个字符
JNB     RI, $            ;; 等待1个字符帧接收完毕         
RX_check:                         ;; 检测收到的字符正确否
CLR     A
MOVC    A,  @A+DPTR      ;; A←数据表的1个字符
INC     DPTR             ;; 数据表指针移动
CLR     RI               ;; RI清零,允许接收字符
SJMP    RX_1chr          ;; 接收另一字符
RX_err:                           ;; 接收字符出错处理
CALL    DLY500           ;; 延时500ms
AJMP    R_X              ;; 重新接收



评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:661907 发表于 2021-4-24 16:03 | 显示全部楼层
#include <reg51.h>  void InitTimer0(void) {     TMOD = 0x02;     TH0 = 0x00;     TL0 = 0x9C;     EA = 1;     ET0 = 1;     TR0 = 1; }  void main(void) {     InitTimer0(); }  void Timer0Interrupt(void) interrupt 1 {     TH0 = 0x00;     TL0 = 0x9C;     //add your code here! }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表