⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asmpro.lst

📁 完整功放的控制程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
0184 C3         =1   394               CLR   C
0185 C2B6       =1   395     TLBL206:  CLR   TBC_CLK_6311            ;PT6311 CLK
0187 13         =1   396               RRC   A
0188 92A6       =1   397               MOV   TBC_DIN_6311,C          ;send data to pt6311
018A 00         =1   398               NOP
018B 00         =1   399               NOP
018C 00         =1   400               NOP
018D 00         =1   401               NOP
018E 00         =1   402               NOP
018F D2B6       =1   403               SETB  TBC_CLK_6311            ;CLK 
0191 00         =1   404               NOP
A51 MACRO ASSEMBLER      ASMPRO                                                              DATE  21/06/03   PAGE     8


LOC  OBJ            LINE     SOURCE

0192 00         =1   405               NOP
0193 00         =1   406               NOP
0194 00         =1   407               NOP
0195 D8EE       =1   408               DJNZ  R0, TLBL206
0197 D2A6       =1   409               SETB  TBC_DIN_6311
0199 D2B6       =1   410               SETB  TBC_CLK_6311            ;BC_CLK_6311 normal high
019B 22         =1   411               RET
                =1   412     ;******************************************
                =1   413     
                     414     
                     415             $INCLUDE (REMOTE.ASM)
                =1   416     ;******************************* 遥控信号接收子程序集 ****************************
                =1   417     ;占用:  ACC, R0, R1, R2, R3, TIME0中断
                =1   418     ;遥控发送以4个字节为一组, 长按按键时, 4个--4个字节连发, 每组(4字节为一组)之间只有3.5ms的间隙
                             
                =1   419     ;第1与2字节为用户码, 固定不变(用于区别其它的遥控器)
                =1   420     ;第3字节为键码, 第4字节为键码的取反码(用于校验)
                =1   421     ;注:键码不等同于需要的键值
                =1   422     
                =1   423     
                =1   424            ;************* 外部变量说明 ********************************
  00B3          =1   425             BC_REMOTE       BIT     P3.3    ;***** 遥控信号读入脚 *****
                =1   426             
                =1   427             
                =1   428             EXTRN   DATA(RKEY_NUM)          ;现键值寄存
                =1   429             EXTRN   BIT(B_RKEY)             ;有remote key时置1, 注:主程序检测该位后清0
                =1   430     
                =1   431             EXTRN   DATA(RKEY_SPEED)        ;连发灵敏度计数, 开机时初始化
                =1   432             EXTRN   DATA(RKEY_KEEP)         ;连发的监控计时数
                =1   433     
                =1   434     
                =1   435             ;遥控完整读入的4个字节存放数组  uchar rmbyte_in[4]
                =1   436             EXTRN   DATA(RMBYTE_IN)         ;第1字节 -- 用户码1存放         ,RMBYTE_IN
                =1   437                                             ;第2字节 -- 用户码2存放         ,RMBYTE_IN+01H
                =1   438                                             ;第3字节 -- 键码存放            ,RMBYTE_IN+02H
                =1   439                                             ;第4字节 -- 键码的反码存放      ,RMBYTE_IN+03H
                =1   440     
                =1   441     
                =1   442             ;************ 公共变量定义 ****************
                =1   443             PUBLIC  GET_REMOTE
                =1   444     
                =1   445     
                =1   446     
                =1   447             ;************** 常数定义 ******************
  0020          =1   448             USER_CODE1    EQU   20H         ;remote user_code low 8bit(用户码1)
  00DF          =1   449             USER_CODE2    EQU   0DFH        ;remote user_code high 8bit(用户码2)
                =1   450     
  00AE          =1   451             CANT_FIND     EQU   0AEH        ;remote key not find(无键标识)
  0002          =1   452             N_RKEY_KEEP   EQU   02H         ;允许连发的停顿时间 0.2ms
                =1   453     
                =1   454     
                =1   455     ;=============================== 公共子程序 (可被C调用) ===============================
                =1   456     ;*************** 遥控信号检测, 键值读入 ***************
                =1   457     ;******************************************************
                =1   458     ;注!!!: 只当主程序中检测到BC_REMOTE脚有低电平时才调用该字程序, 然后再进入键功能程序.
                =1   459     ;返回: RKEY_NUM(键值)代表的功能参考-- 表RKEY_TABLE, 值=#CANT_FIND (#0AEH)即为无按键
                =1   460     ;      B_RKEY   有remote key时置1, 注:主程序检测该位后清0
                =1   461     ;子程序调用分辨率要在1ms之内
                =1   462     
A51 MACRO ASSEMBLER      ASMPRO                                                              DATE  21/06/03   PAGE     9


LOC  OBJ            LINE     SOURCE

                =1   463     
019C            =1   464     GET_REMOTE:
019C D2B3       =1   465           SETB  BC_REMOTE
019E 00         =1   466           NOP
019F 00         =1   467           NOP
01A0 00         =1   468           NOP 
01A1 30B301     =1   469           JNB   BC_REMOTE, GET_REMOTE_P0
01A4 22         =1   470           RET
                =1   471     
01A5            =1   472     GET_REMOTE_P0:
01A5 758C00     =1   473           MOV   TH0,#000H
01A8 758A00     =1   474           MOV   TL0,#000H
01AB E589       =1   475           MOV   A,TMOD
01AD 54F0       =1   476           ANL   A,#0F0H
01AF D2E0       =1   477           SETB  ACC.0
01B1 F589       =1   478           MOV   TMOD,A                      ;timer/counter0 16bit timer/counter
                =1   479     
01B3 74FF       =1   480           MOV   A, #0FFH
01B5            =1   481     LBL_P25:
01B5 30B304     =1   482           JNB   BC_REMOTE,LBL_P256          ;get remote key
01B8 D5E0FA     =1   483           DJNZ  ACC, LBL_P25
01BB 22         =1   484           RET
                =1   485           
01BC            =1   486     LBL_P256:
01BC D28C       =1   487           SETB  TR0 
01BE            =1   488     LBL_P28:
01BE E58C       =1   489           MOV   A,TH0
01C0 B41400     =1   490           CJNE  A,#014H,LBL_P26             ;10ms
01C3            =1   491     LBL_P26:
01C3 501F       =1   492           JNC   LBL_P27                     ;if >10ms,regard this is a nosie
01C5 30B3F6     =1   493           JNB   BC_REMOTE,LBL_P28           ;get remote key
01C8 B40500     =1   494           CJNE  A,#005H,LBL_P29             ;2.5ms
01CB            =1   495     LBL_P29:
01CB 4017       =1   496           JC    LBL_P27                     ;if <2.5ms,regard this is a nosie
01CD 758C00     =1   497           MOV   TH0,#000H 
01D0 758A00     =1   498           MOV   TL0,#000H 
01D3            =1   499     LBL_P31:
01D3 E58C       =1   500           MOV   A,TH0
01D5 B40A00     =1   501           CJNE  A,#00AH,LBL_P30 
01D8            =1   502     LBL_P30:
01D8 500A       =1   503           JNC   LBL_P27                     ;if >5ms,regard this is a nosie
01DA 20B3F6     =1   504           JB    BC_REMOTE,LBL_P31           ;get remote key
01DD B40700     =1   505           CJNE  A,#007H,LBL_P32 
01E0            =1   506     LBL_P32:
01E0 404D       =1   507           JC    LBL_P33                     ;if<3.5ms, 当是连发时
01E2 8001       =1   508           SJMP  LBL_P34                     ;above is the start flag, 当是起始信号时 
01E4            =1   509     LBL_P27:
01E4 22         =1   510           RET
                =1   511     
                =1   512     
01E5            =1   513     LBL_P34:                                ;****** 是新按下的******
01E5 E4         =1   514           CLR   A                           ;>3.5ms and <5ms
01E6 7A04       =1   515           MOV   R2,#004H                    ;4 BYTE
01E8 7800     F =1   516           MOV   R0,#RMBYTE_IN               ;用户码存放地址1
01EA            =1   517     LBL_P41:
01EA 7908       =1   518           MOV   R1,#008H                    ;8bit
01EC            =1   519     LBL_P40:
01EC 758C00     =1   520           MOV   TH0,#000H
01EF 758A00     =1   521           MOV   TL0,#000H 
A51 MACRO ASSEMBLER      ASMPRO                                                              DATE  21/06/03   PAGE    10


LOC  OBJ            LINE     SOURCE

01F2            =1   522     LBL_P36:
01F2 AB8C       =1   523           MOV   R3,TH0
01F4 BB0200     =1   524           CJNE  R3,#002H,LBL_P35 
01F7            =1   525     LBL_P35:
01F7 50EB       =1   526           JNC   LBL_P27                     ;>1ms
01F9 30B3F6     =1   527           JNB   BC_REMOTE,LBL_P36           ;get remote key
01FC 758C00     =1   528           MOV   TH0,#000H 
01FF 758A00     =1   529           MOV   TL0,#000H 
0202            =1   530     LBL_P38:
0202 AB8C       =1   531           MOV   R3,TH0
0204 BB0400     =1   532           CJNE  R3,#004H,LBL_P37 
0207            =1   533     LBL_P37:
0207 50DB       =1   534           JNC   LBL_P27                     ;>2ms
0209 20B3F6     =1   535           JB    BC_REMOTE,LBL_P38           ;get remote key
020C BB0200     =1   536           CJNE  R3,#002H,LBL_P39            ;>1ms is bit 0,<1ms is bit 1
020F            =1   537     LBL_P39:
020F B3         =1   538           CPL   C
0210 13         =1   539           RRC   A                           ;the data is low bit first
0211 D9D9       =1   540           DJNZ  R1,LBL_P40 
0213 F6         =1   541           MOV   @R0,A 
0214 08         =1   542           INC   R0 
0215 DAD3       =1   543           DJNZ  R2,LBL_P41                  ;32 bit
                =1   544     
0217 E500     F =1   545           MOV   A,RMBYTE_IN 
0219 B42012     =1   546           CJNE  A,#USER_CODE1,LBL_P42 
021C E500     F =1   547           MOV   A,RMBYTE_IN+01H 
021E B4DF0D     =1   548           CJNE  A,#USER_CODE2,LBL_P42 
0221 E500     F =1   549           MOV   A,RMBYTE_IN+02H
0223 2500     F =1   550           ADD   A,RMBYTE_IN+03H 
0225 B4FF06     =1   551           CJNE  A,#0FFH,LBL_P42             ;后两字节是互补编码,若不是即是出错
                =1   552     ;      MOV   R0,#48D                    ;******键值表为0-38 ******
                =1   553     ;      MOV   DPTR,#RKEY_TABLE
                =1   554     ;      MOV   RKEY_SPEED, #00H                   ;remote 连发速度, 先设置为最慢
                =1   555     ;LBL_P46:
                =1   556     ;      MOV   A,R0
                =1   557     ;      MOVC  A,@A+DPTR 
                =1   558     ;      CJNE  A,RMBYTE_IN+02H,LBL_P43            ;get the low code byte from the table
                =1   559     ;      MOV   RKEY_NUM,R0                ;save the offset
0228 850000   F =1   560            MOV   RKEY_NUM,RMBYTE_IN+02H
022B 02023B     =1   561           LJMP  LBL_P44                     ;get it
                =1   562     ;LBL_P43:
                =1   563     ;      MOV   A,R0
                =1   564     ;      JZ    LBL_P45 
                =1   565     ;      DEC   R0 
                =1   566     ;      SJMP  LBL_P46 
                =1   567     ;LBL_P45:
                =1   568     ;      MOV   RKEY_NUM,#CANT_FIND        ;can't find the code
022E            =1   569     LBL_P42:
022E 22         =1   570           RET
                =1   571     
                =1   572     
                =1   573     
                =1   574     
022F            =1   575     LBL_P33:                                ;<3.5ms CONTINUES ****** 连发的 *******
022F 750002   F =1   576           MOV   RKEY_KEEP, #N_RKEY_KEEP     ;允许连发的停顿时间 0.2ms
0232 D50005   F =1   577           DJNZ  RKEY_SPEED, LBL_P50         ;remote 灵敏度
0235            =1   578     LBL_P51:
0235 E500     F =1   579           MOV   A,RKEY_NUM
0237 B4AE07     =1   580           CJNE  A,#CANT_FIND,LBL_P48
A51 MACRO ASSEMBLER      ASMPRO                                                              DATE  21/06/03   PAGE    11


LOC  OBJ            LINE     SOURCE

023A            =1   581     LBL_P50:
023A 22         =1   582           RET
023B            =1   583     LBL_P44:
023B E500     F =1   584           MOV   A,RKEY_NUM
023D B4AE01     =1   585           CJNE  A,#CANT_FIND,LBL_P48
0240 22         =1   586           RET                               ;can't find the code
0241            =1   587     LBL_P48:
0241            =1   588     LBL_P49:
0241 750002   F =1   589           MOV   RKEY_KEEP, #N_RKEY_KEEP     ;允许连发的停顿时间 0.2s
0244 D200     F =1   590           SETB   B_RKEY                     ;有按键

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -