标题:
大佬们,9600bps@11.0592MHz有没有定时器2程序,求分享
[打印本页]
作者:
四无青年
时间:
2021-3-7 22:35
标题:
大佬们,9600bps@11.0592MHz有没有定时器2程序,求分享
如题
作者:
人人学会单片机
时间:
2021-3-8 00:22
定时器2 应该默认是对应串口2 ,89系列没有串口2
作者:
wwh2382
时间:
2021-3-8 21:01
还要看具体的单片机,例如STC15W408AS有定时器0和定时器2,无定时器1。
作者:
Kxuan163
时间:
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 ;; 重新接收
作者:
冰凌主银
时间:
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! }
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1