• <rp id="wfxtb"><acronym id="wfxtb"></acronym></rp><em id="wfxtb"></em><dd id="wfxtb"><big id="wfxtb"><video id="wfxtb"></video></big></dd>
  • <rp id="wfxtb"></rp>

    <mark id="wfxtb"><center id="wfxtb"></center></mark>

      <rp id="wfxtb"><span id="wfxtb"><u id="wfxtb"></u></span></rp>

      <rp id="wfxtb"><object id="wfxtb"></object></rp>

      注意:訪問本站需要Cookie和JavaScript支持!請設置您的瀏覽器! 打開購物車 查看留言付款方式聯系我們
      初中電子 單片機教材一 單片機教材二
      搜索上次看見的商品或文章:
      商品名、介紹 文章名、內容
      首頁 電子入門 學單片機 免費資源 下載中心 商品列表 象棋在線 在線繪圖 加盟五一 加入收藏 設為首頁
      本站推薦:
      EM78P153程序范例
      文章長度[8404] 加入時間[2006/7/1] 更新時間[2025/3/21 0:15:05] 級別[3] [評論] [收藏]
      ;芯片為EM78P153
      ;P64,P65接晶振,振蕩模式為4MHz晶振
      ;看門狗關,指令周期為2個CLOCK,P63為復位腳
      ;*******************IO口的定義*********************
      PORT6 EQU 0X06
      IOC60 EQU 0X06
      ;**************特殊功能寄存器的定義******************
      TCC EQU 0X01
      PC EQU 0X02
      PSW EQU 0X03
      IOCD0 EQU 0X0D
      IOCE0 EQU 0X0E
      IOCF0 EQU 0X0F
      RF EQU 0X0F
      ;***************用戶自定義的寄存器*******************
      COUNTER EQU 0X10
      CODE1 EQU 0X11
      CODE2 EQU 0X12
      CODE3 EQU 0X13
      CODE4 EQU 0X14
      LP_CNT0 EQU 0X15
      LP_CNT1 EQU 0X16
      TEMP EQU 0X17
      TEMPCODE EQU 0X18
      REPEAT_COUNTER EQU 0X19
      SEND_DATA EQU 0X1A
      USER_CODE EQU 0X1B
      FLAG EQU 0X1C
      ;*******************FLAG位定義**********************
      C EQU 0
      Z EQU 2
      TCIF EQU 0
      LEAD EQU 0
      REPEAT EQU 1
      INPUT EQU 1
      OUTPUT EQU 0
      ORG 0X000
      NOP
      NOP
      NOP
      NOP
      JMP 0X50
      ;********************表格轉換子程序程序******************
      TABLE_CONVER:
      CLR TEMP
      TABLE_CONVER_1:
      MOV A,TEMP
      CALL TABLE_CONVERSION_IN
      BC PSW,Z
      XOR A,CODE3
      JBC PSW,Z
      JMP EXIT_5
      INC TEMP
      JMP TABLE_CONVER_1
      EXIT_5:
      CALL TABLE_CONVERSION_OUT
      RET
      ;**********************表格轉換程序IN*********************
      TABLE_CONVERSION_IN:
      ADD PC,A
      RETL 0XD0 ;KEY_1
      RETL 0X58 ;KEY_2
      RETL 0XD8 ;KEY_3
      RETL 0X90 ;KEY_4
      RETL 0X18 ;KEY_5
      RETL 0X98 ;KEY_6
      RETL 0XE0 ;KEY_7
      RETL 0X68 ;KEY_8
      RETL 0XE8 ;KEY_9
      RETL 0X28 ;KEY_0
      RETL 0X20 ;KEY_3D
      RETL 0XA0 ;KEY_MUTE
      RETL 0X40 ;KEY_VOCAL
      RETL 0XE2 ;KEY_VOL+
      RETL 0XA2 ;KEY_VOL-
      RETL 0X52 ;KEY_TUNE FWD
      RETL 0X22 ;KEY_TUNE REV
      RETL 0X12 ;KEY_STOP
      RETL 0X80 ;KEY_<|
      RETL 0X82 ;KEY_|>
      RETL 0X02 ;KEY_OK
      RETL 0XF0 ;KEY_TUNER
      RETL 0X78 ;KEY_AM/FM
      RETL 0XF8 ;KEY_SAVE
      RETL 0X50 ;KEY_AUDIO
      ;**********************表格轉換程序OUT*********************
      TABLE_CONVERSION_OUT:
      MOV A,TEMP
      ADD PC,A
      RETL 0X35 ;KEY_1
      RETL 0X2D ;KEY_2
      RETL 0X25 ;KEY_3
      RETL 0X1D ;KEY_4
      RETL 0X34 ;KEY_5
      RETL 0X2C ;KEY_6
      RETL 0X24 ;KEY_7
      RETL 0X1C ;KEY_8
      RETL 0X33 ;KEY_9
      RETL 0X2B ;KEY_0
      RETL 0X10 ;KEY_3D
      RETL 0X18 ;KEY_MUTE
      RETL 0X11 ;KEY_VOCAL
      RETL 0X16 ;KEY_VOL+
      RETL 0X15 ;KEY_VOL-
      RETL 0X28 ;KEY_TUNE FWD
      RETL 0X2A ;KEY_TUNE REV
      RETL 0X22 ;KEY_STOP
      RETL 0X31 ;KEY_<|
      RETL 0X21 ;KEY_|>
      RETL 0X29 ;KEY_OK
      RETL 0X2E ;KEY_TUNER
      RETL 0X20 ;KEY_AUX-1
      RETL 0X23 ;KEY_AUX-2
      RETL 0X17 ;KEY_DVD

      ORG 0X050
      MAIN:
      ;*********************初始化寄存器**********************
      MOV A,@0B00000000
      IOW IOCE0
      MOV A,@0B11111101
      IOW IOCD0
      MOV A,@0B00000010
      IOW IOC60
      MOV A,@0B00000001
      MOV PORT6,A
      MOV A,@0B00000001
      IOW IOCF0
      CLR FLAG
      CLR TEMPCODE
      CLR COUNTER
      CLR CODE1
      CLR CODE2
      CLR CODE3
      CLR CODE4
      MOV A,@0B10010000
      MOV USER_CODE,A
      ;*********************掃描引導碼**********************
      SCAN_LEAD_CODE:
      JBC PORT6,INPUT
      JMP SCAN_LEAD_CODE
      CLR FLAG
      CLR REPEAT_COUNTER
      CLR TEMPCODE
      CALL JUDGE_START_CODE
      JBS FLAG,LEAD
      JMP SCAN_LEAD_CODE
      ;*********************接收數據**********************
      RECEIVE_DATA_PROCEE:
      CLR TEMPCODE
      CALL RECEIVE_DATA
      MOV A,TEMPCODE
      MOV CODE1,A

      MOV A,@0 ;判斷用戶碼是否是00
      BC PSW,Z
      XOR A,CODE1
      JBS PSW,Z
      JMP SCAN_LEAD_CODE


      CLR TEMPCODE
      CALL RECEIVE_DATA
      MOV A,TEMPCODE
      MOV CODE2,A

      MOV A,@0XFF ;判斷用戶碼是否是FF
      BC PSW,Z
      XOR A,CODE2
      JBS PSW,Z
      JMP SCAN_LEAD_CODE

      CLR TEMPCODE
      CALL RECEIVE_DATA
      MOV A,TEMPCODE
      MOV CODE3,A

      CLR TEMPCODE
      CALL RECEIVE_DATA
      MOV A,TEMPCODE
      MOV CODE4,A
      CLR FLAG
      ;*********************發送數據**********************
      SEND_DATA_PROCEE:
      JBS USER_CODE,6 ;ST碼的次高位反相
      JMP COM_1 ;=0
      JMP COM_2 ;=1
      COM_1:
      BS USER_CODE,6
      JMP VVV
      COM_2:
      BC USER_CODE,6
      JMP VVV
      VVV:
      CALL TABLE_CONVER ;調用碼表轉換子程序
      MOV CODE3,A
      REP:
      CALL TRANSMIT_DATA
      BS PORT6,OUTPUT
      CALL JUDGE_REPEAT_CODE ;掃描引導碼是否在重復?
      JBS FLAG,LEAD
      JMP SCAN_LEAD_CODE
      JBC FLAG,REPEAT
      JMP REP ;引導碼是重復,繼續掃描
      JMP RECEIVE_DATA_PROCEE ;引導碼不重復,去接收新數據
      ;****************引導碼的檢測子程序*****************
      JUDGE_START_CODE:
      CLR COUNTER ;清計數器
      JUDGE_START_CODE_0:
      JBC PORT6,INPUT
      JMP NO_HIGH
      CALL DELAY0.5MS
      JBC PORT6,INPUT
      JMP NO_HIGH
      INC COUNTER
      JMP JUDGE_START_CODE_0
      NO_HIGH:
      MOV A,COUNTER
      BC PSW,C
      SUB A,@20 ;20-A
      JBS PSW,C
      JMP EXIT_0 ;C=1,COUNTER>20
      MOV A,COUNTER
      BC PSW,C
      SUB A,@16 ;16-A
      JBC PSW,C
      JMP EXIT_0 ;C=0,COUNTER<16
      BS FLAG,LEAD
      EXIT_0:
      JBC PORT6,INPUT
      JMP EXIT_0
      INC REPEAT_COUNTER
      RET
      ;****************接收數據子程序**********************
      RECEIVE_DATA:
      MOV A,@8
      MOV COUNTER,A
      MOV A,@0B00100000
      CONTW ;停止記數
      CONTINUE_1:
      JBS PORT6,INPUT
      JMP CONTINUE_1
      CLR TCC
      MOV A,@0B00000100
      CONTW ;TCC開始記數
      CONTINUE_2:
      MOV A,TCC
      MOV TEMP,A
      BC PSW,C
      SUB A,@250
      JBS PSW,C
      JMP SCAN_LEAD_CODE ;C=0,TCC>250

      JBC PORT6,INPUT
      JMP CONTINUE_2
      MOV A,TCC
      MOV TEMP,A
      BC PSW,C
      SUB A,@60;142
      JBC PSW,C
      JMP X1 ;C=1,TCC<60
      JMP X2 ;C=0,TCC>60
      X1:
      BC TEMPCODE,0
      JMP EXIT_1
      X2:
      BS TEMPCODE,0
      JMP EXIT_1
      EXIT_1:
      DJZ COUNTER
      JMP HH
      MOV A,@0B00100000
      CONTW ;停止記數
      RET
      HH:
      BC PSW,C
      RLC TEMPCODE
      JMP CONTINUE_1

      ;****************發送數據子程序**********************
      TRANSMIT_DATA:
      MOV A,@4
      MOV COUNTER,A
      MOV A,USER_CODE ;@0B10010000 ;發送ST的用戶碼
      MOV SEND_DATA,A
      CYCLE_1:
      JBS SEND_DATA,7
      JMP SEND_P_0
      JMP SEND_P_1
      SEND_P_1:
      CALL SEND_CODE_1
      JMP EXIT_3
      SEND_P_0:
      CALL SEND_CODE_0
      JMP EXIT_3
      EXIT_3:
      RLC SEND_DATA
      DJZ COUNTER
      JMP CYCLE_1

      MOV A,@8
      MOV COUNTER,A
      MOV A,CODE3
      MOV SEND_DATA,A
      RLC SEND_DATA
      CYCLE_2:
      JBS SEND_DATA,7
      JMP SEND_Q_0
      JMP SEND_Q_1
      SEND_Q_1:
      CALL SEND_CODE_1
      JMP EXIT_4
      SEND_Q_0:
      CALL SEND_CODE_0
      JMP EXIT_4
      EXIT_4:
      RLC SEND_DATA
      DJZ COUNTER
      JMP CYCLE_2
      RET
      ;***************發送數據"1"子程序********************
      SEND_CODE_1:
      MOV A,@0B00100000
      CONTW ;停止記數
      MOV A,@0B00000001 ;允許TCC中斷
      IOW IOCF0
      MOV A,@35 ;引導脈沖的預置值
      MOV TCC,A
      MOV A,@0B00000001 ;選擇預分頻比為1:4
      CONTW
      BC PORT6,OUTPUT
      WAIT_1:
      JBS RF,TCIF
      JMP WAIT_1
      MOV A,@0B00100000
      CONTW ;停止記數
      BC RF,TCIF
      MOV A,@32 ;代碼"1"的預置值
      MOV TCC,A
      MOV A,@0B00000101 ;選擇預分頻比為1:64
      CONTW
      BS PORT6,OUTPUT
      WAIT_2:
      JBS RF,TCIF
      JMP WAIT_2
      BC RF,TCIF
      MOV A,@0B00100000
      CONTW ;停止記數
      RET
      ;***************發送數據"0"子程序********************
      SEND_CODE_0:
      MOV A,@0B00100000
      CONTW ;停止記數
      MOV A,@0B00000001 ;允許TCC中斷
      IOW IOCF0
      MOV A,@35 ;引導脈沖的預置值
      MOV TCC,A
      MOV A,@0B00000001 ;選擇預分頻比為1:4
      CONTW
      BC PORT6,OUTPUT
      WAIT_3:
      JBS RF,TCIF
      JMP WAIT_3
      MOV A,@0B00100000
      CONTW ;停止記數
      BC RF,TCIF

      MOV A,@114 ;代碼"0"的預置值
      MOV TCC,A
      MOV A,@0B00000101 ;選擇預分頻比為1:64
      CONTW
      BS PORT6,OUTPUT
      WAIT_4:
      JBS RF,TCIF
      JMP WAIT_4
      NOP
      BC RF,TCIF
      MOV A,@0B00100000
      CONTW ;停止記數
      RET
      ;****************重復碼的檢測子程序******************
      JUDGE_REPEAT_CODE:
      CLR COUNTER ;清計數器
      CLR FLAG
      JUDGE_REPEAT_CODE_0:
      JBC PORT6,INPUT
      JMP JUDGE_REPEAT_CODE_0
      SS:
      JBC PORT6,INPUT
      JMP JUDGE_REPEAT_CODE_1
      CALL DELAY0.5MS
      JBC PORT6,INPUT
      JMP JUDGE_REPEAT_CODE_1
      INC COUNTER
      JMP SS
      JUDGE_REPEAT_CODE_1:
      MOV A,COUNTER
      BC PSW,C
      SUB A,@20 ;20-A
      JBS PSW,C
      JMP EXIT_2 ;C=1,COUNTER>20
      MOV A,COUNTER
      BC PSW,C
      SUB A,@16 ;16-A
      JBC PSW,C
      JMP EXIT_2 ;C=0,COUNTER<16
      BS FLAG,LEAD
      JMP JUDGE_REPEAT_CODE_2
      EXIT_2:
      RET
      JUDGE_REPEAT_CODE_2:
      CLR COUNTER ;清計數器
      JUDGE_REPEAT_CODE_3:
      JBS PORT6,INPUT
      JMP JUDGE_REPEAT_CODE_4
      CALL DELAY0.5MS
      JBS PORT6,INPUT
      JMP JUDGE_REPEAT_CODE_4
      INC COUNTER
      JMP JUDGE_REPEAT_CODE_3
      JUDGE_REPEAT_CODE_4:
      MOV A,COUNTER
      BC PSW,C
      SUB A,@7 ;7-A
      JBS PSW,C
      JMP NO_REPEAT ;C=0,COUNTER>7
      JMP YES_REPEAT ;C=1,COUNTER<7
      NO_REPEAT:
      BC FLAG,REPEAT
      CLR REPEAT_COUNTER
      RET
      YES_REPEAT:
      BS FLAG,REPEAT
      INC REPEAT_COUNTER
      RET
      ;****************延時0.5mS子程序*********************
      DELAY0.5MS:
      MOV A,@2
      MOV LP_CNT0,A
      DELAY0.5MS_1:
      MOV A,@82
      MOV LP_CNT1,A
      DELAY0.5MS_2:
      NOP
      NOP
      NOP
      DJZ LP_CNT1
      JMP DELAY0.5MS_2
      DJZ LP_CNT0
      JMP DELAY0.5MS_1
      RET


      1、 本站不保證以上觀點正確,就算是本站原創作品,本站也不保證內容正確。
      2、如果您擁有本文版權,并且不想在本站轉載,請書面通知本站立即刪除并且向您公開道歉! 以上可能是本站收集或者轉載的文章,本站可能沒有文章中的元件或產品,如果您需要類似的商品請 點這里查看商品列表!
      本站協議。 版權信息。 關于我們。 本站地圖。 營業執照。 發票說明。 付款方式。 聯系方式
      深圳市寶安區西鄉五壹電子商行——粵ICP備16073394號-1;地址:深圳西鄉河西四坊183號;郵編:518102
      E-mail:51dz$163.com($改為@);Tel:(0755)27947428
      工作時間:9:30-12:00和13:30-17:30和18:30-20:30,無人接聽時可以再打手機13537585389
      91嫩草黄片动漫版