1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      串囗模擬

      更新時間: 2006-03-16 14:44:33來源: 粵嵌教育瀏覽量:3875

      ;***********************************************************
      ;普通IO口模擬RS232串口 占用定時器0中斷
      ;在TH0,TL0中設置波特率的大小 注意不要開定時器0的中斷,這里用的是查詢方式
      ;***********************************************************

      BT_REC BIT P1.2
      BT_SND BIT P1.5
      ;占用定時器0
      ORG 0000H
      AJMP MAIN
      main: MOV SP,#59H

      RS232: MOV TMOD,#02 ;利用定時器方式0
      MOV PCON,#80H
      ;****************************************************
      ;9600bps 就是 1000000/9600=104.167微秒
      ;執行的timer是104.167*11.0592/12= 96 256-96=160(0A0H)
      ;執行的timer是104.167*22.1184/12= 192 256-192=64(040H)

      ;19200bps 就是 1000000/19200=52.083微秒
      ;執行的timer是52.083*11.0592/12= 48 256-48=208(0D0H)
      ;執行的timer是52.083*22.1184/12= 96 256-96=160(0A0H)

      ;115200bps 就是 1000000/115200=8.6806微秒 (可能出錯,達不到那么高)
      ;執行的timer是8.6806*11.0592/12= 8 256- 8=248(0F8H)
      ;執行的timer是8.6806*22.1184/12= 16 256-16=240(0F0H)

      ;所以,改變TH0,TL0的處置就是改變了波特率
      ;****************************************************
      MOV TH0,#0A0H
      MOV TL0,#0A0H
      SETB TR0 ;開定時器0
      ;============發送==============

      MOV A,#55H
      LCALL S_Char
      MOV A,#56H
      LCALL S_Char
      MOV A,#77H
      LCALL S_Char
      AJMP JIESHU

      ;============接收=============
      STAR: JB BT_REC,$ ;檢測是否有開始位
      LCALL G_Char
      MOV 30H,A ;存儲接受來的數據
      STAR0: JB BT_REC,$ ;檢測是否有開始位
      LCALL G_Char
      MOV 31H,A
      JIESHU: NOP
      AJMP JIESHU

      ;==============子程序=======================


      ;----------接收1個字節-------
      ;接收來的數在A中
      ;用到的資源:TF0,ACC,R7,TR0,TL0,TR0
      G_Char: MOV TL0,TR0
      SETB TR0
      MOV R7,#08H
      R_LOOP: CLR TF0 ;等待TIMER0的中斷TIMER0中斷的時間定了那么波特率也就定了
      JNB TF0,$
      MOV C,BT_REC
      RRC A
      DJNZ R7,R_LOOP
      CLR TF0
      ST_BIT: JB TF0,SADA ;等待停止位
      JNB BT_REC,ST_BIT
      SADA: CLR TR0
      RET

      ;---------發送1個字節------------
      ;要發送的數存在R7中
      ;用到的資源:R7,A,TF0,TRO,TL0,TR0
      S_Char: CLR TF0
      CLR BT_SND
      MOV R7,#08H
      MOV TL0,TR0
      SETB TR0
      LOOP: JNB TF0,$ ;判斷定時器是否溢出
      RRC A
      MOV BT_SND,C
      CLR TF0
      DJNZ R7,LOOP
      JNB TF0,$
      SETB BT_SND
      CLR TF0
      JNB TF0,$
      CLR TR0
      RET

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 直接在线看黄AV免费观看 | 中文字幕制服丝袜日韩专区 | 亚洲中文丝袜精品网 | 日本欧美视频图片 | 一本大道香蕉青青久久 | 在线观看亚洲欧美日本专区 |