找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2193|回復: 4
收起左側(cè)

大佬們,9600bps@11.0592MHz有沒有定時器2程序,求分享

[復制鏈接]
ID:619615 發(fā)表于 2021-3-7 22:35 來自手機 | 顯示全部樓層 |閱讀模式
如題
回復

使用道具 舉報

ID:390416 發(fā)表于 2021-3-8 00:22 | 顯示全部樓層
定時器2 應(yīng)該默認是對應(yīng)串口2  ,89系列沒有串口2
回復

使用道具 舉報

ID:748788 發(fā)表于 2021-3-8 21:01 | 顯示全部樓層
還要看具體的單片機,例如STC15W408AS有定時器0和定時器2,無定時器1。
回復

使用道具 舉報

ID:858964 發(fā)表于 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位自動重載計數(shù)初值)
MOV   TH1,#0FDH   ;置入初裝值
MOV  TL1,#0FDH     ;置入重裝值
MOV           SCON, #70H   ;; 設(shè)定串口工作方式1,8位UART,接收允許
ANL           PCON, #00H   ;; 波特率不倍增
SETB           TR1                ;; 啟動定時器T1
MOV           IE,   #0                ;; 禁止任何中斷
CALL    DLY125           ;; 延時125ms

SETB  TR1                  ;啟動T1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

T_X:                            ;;發(fā)送端的發(fā)送程序
MOV     R3, #9           ;; 待發(fā)送字符個數(shù)   
MOV     DPTR, #TAB_TX    ;; 數(shù)據(jù)表首址
TX_LP1:    CLR     A
MOVC    A,  @A+DPTR      ;; A←數(shù)據(jù)表的1個字符
CLR     TI               ;; TI清零,允許發(fā)送
MOV     SBUF,A           ;; 發(fā)送1個字符
JNB     TI,  $           ;; 等待1個字符幀發(fā)送結(jié)束
DJNZ    R3,  TX_next  
CALL    DLY500           ;; 延時500ms
JMP    T_X              ;; 重復發(fā)送
TX_next:                            ;; 發(fā)送另一字符
           INC     DPTR             ;; 數(shù)據(jù)表指針移動
           SJMP    TX_LP1  

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
R_X:                         ;; 接收端的接收程序
CLR     RI               ;; RI清零,允許接收字符
MOV     R3, #4           ;; 待接收字符個數(shù)
MOV     DPTR, #DAT_tab   ;; 數(shù)據(jù)表首址                    
RX_1chr:                          ;; 接收1個字符
JNB     RI, $            ;; 等待1個字符幀接收完畢         
RX_check:                         ;; 檢測收到的字符正確否
CLR     A
MOVC    A,  @A+DPTR      ;; A←數(shù)據(jù)表的1個字符
INC     DPTR             ;; 數(shù)據(jù)表指針移動
CLR     RI               ;; RI清零,允許接收字符
SJMP    RX_1chr          ;; 接收另一字符
RX_err:                           ;; 接收字符出錯處理
CALL    DLY500           ;; 延時500ms
AJMP    R_X              ;; 重新接收



評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:661907 發(fā)表于 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! }
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表