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

📄 main.lst

📁 单片机学习的最好例子, 1.51多任务切换 2.红外解码 3.数码管扫描显示 4.1602LCD的现实,以及文字动画效果 5.系统构架,资源整合,菜单应用,按键板,其它更新中
💻 LST
📖 第 1 页 / 共 5 页
字号:
01E7 3164       +1   657         CALL    I2C_STOP 
01E9 22         +1   658     RET
                     659     
                     660     
                     661     ;Module
                     662         ;$include (..\Main\Flow.inc)
                +1   663     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                             ;;;;;;;;;;;;;
                +1   664     ;;System flow part
                +1   665     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                             ;;;;;;;;;;;;;
                +1   666     ;;Flow process
01EA            +1   667     FLOW_PROCESS:
                +1   668     
                +1   669     
01EA 020565     +1   670         LJMP     MAIN_FLOW_PROCESS_RETURN
                +1   671     ;RET return by youself
                     672     
                     673         ;$include (..\IR\IR.inc)
                +1   674     ;IR part
01ED            +1   675     IR_INITIAL:
01ED 751100     +1   676         MOV      VAR_IR_CUSTOMER_CODE,#0x00
01F0 751200     +1   677         MOV      VAR_IR_CUSTOMER_CODE_INVERSE,#0x00
01F3 751300     +1   678         MOV      VAR_IR_KEY_CODE,#0x00
01F6 751400     +1   679         MOV      VAR_IR_KEY_CODE_INVERSE,#0x00 
01F9 22         +1   680     RET
                +1   681     
                +1   682     ;IR process
01FA            +1   683     IR_PROCESS_00:
01FA 30A203     +1   684         JNB      DEFINE_IR_IO_PORT,IR_PROCESS_00_START
A51 MACRO ASSEMBLER  MAIN                                                                 04/19/2009 02:07:50 PAGE    12

01FD 02023B     +1   685         LJMP     IR_PROCESS_00_NEXT
                +1   686         
                +1   687         ;Delay 8ms
0200            +1   688         IR_PROCESS_00_START:
0200 7E09       +1   689         MOV      R6,#0x09
                +1   690     
0202            +1   691         IR_PROCESS_00_LEADER_DETECT:
0202 5141       +1   692         ACALL       DELAY882
                +1   693     
                +1   694         ;Invalid leader code
0204 20A234     +1   695         JB       DEFINE_IR_IO_PORT,IR_PROCESS_00_NEXT
0207 DEF9       +1   696         DJNZ     R6,IR_PROCESS_00_LEADER_DETECT
                +1   697     
                +1   698         ;Wait high pulse
0209 30A2FD     +1   699         JNB      DEFINE_IR_IO_PORT,$
                +1   700         
                +1   701         ;Delay 2.4ms
020C 514F       +1   702         ACALL       DELAY2400
                +1   703         
                +1   704         ;Series code detect
020E 30A22D     +1   705         JNB      DEFINE_IR_IO_PORT,IR_PROCESS_00_SERIES_CODE 
                +1   706     
                +1   707         ;Delay 2.4ms
0211 514F       +1   708         ACALL       DELAY2400
                +1   709         
0213 7911       +1   710         MOV      R1,#VAR_IR_BUFFER_START_ADDRESS
0215 7D04       +1   711         MOV      R5,#0x04
                +1   712         
0217            +1   713         IR_PROCESS_00_4BYTE:
0217 7E08       +1   714         MOV      R6,#0x08
                +1   715     
                +1   716         ;Wait high pulse
0219            +1   717         IR_PROCESS_00_8BIT:
0219 30A2FD     +1   718         JNB      DEFINE_IR_IO_PORT,$
                +1   719     
021C 120241     +1   720         LCALL DELAY882
                +1   721     
                +1   722         ;Receive start
021F A2A2       +1   723         MOV      C,DEFINE_IR_IO_PORT
0221 5003       +1   724         JNC      IR_PROCESS_00_RECEIVE_BIT
                +1   725     
0223 120248     +1   726         LCALL DELAY1000
                +1   727             
0226            +1   728         IR_PROCESS_00_RECEIVE_BIT:
0226 E7         +1   729         MOV      A,@R1
0227 13         +1   730         RRC      A
0228 F7         +1   731         MOV      @R1,A
0229 DEEE       +1   732         DJNZ     R6,IR_PROCESS_00_8BIT
                +1   733         
022B 09         +1   734         INC      R1
022C DDE9       +1   735         DJNZ     R5,IR_PROCESS_00_4BYTE
                +1   736         
                +1   737         ;IR decode finish
                +1   738         ;TUBE show code
022E 851110     +1   739         MOV      VAR_TUBE_SHOW_BYTE1,VAR_IR_CUSTOMER_CODE
0231 85130F     +1   740         MOV      VAR_TUBE_SHOW_BYTE0,VAR_IR_KEY_CODE
                +1   741     
                +1   742         ;LED show code
0234 851390     +1   743         MOV      DEFINE_LED_IO_PORT,VAR_IR_KEY_CODE
                +1   744                               
                +1   745         ;Tone
0237 C2A3       +1   746         CLR      DEFINE_TONE_IO_PORT
                +1   747         
0239 D2A3       +1   748         SETB     DEFINE_TONE_IO_PORT      
                +1   749     
023B            +1   750         IR_PROCESS_00_NEXT:
A51 MACRO ASSEMBLER  MAIN                                                                 04/19/2009 02:07:50 PAGE    13

023B            +1   751         IR_PROCESS_00_RETURN:
                +1   752     
023B 02009B     +1   753         LJMP     TIMER_INTERRUPT_0_FOR_MULTI_TASK__IR_PROCESS_RETURN;IR_PROCESS_00
                +1   754         
023E            +1   755         IR_PROCESS_00_SERIES_CODE:
                +1   756         ;do something
023E 02023B     +1   757         LJMP     IR_PROCESS_00_RETURN 
                +1   758     ;RET
                +1   759     
                +1   760     ;=============================882
0241            +1   761     DELAY882: ;1.085x ((202x4)+5)=882
0241 7FCA       +1   762             MOV     R7,#202
0243            +1   763         DELAY882_A:
0243 00         +1   764             NOP
0244 00         +1   765             NOP
0245 DFFC       +1   766             DJNZ    R7,DELAY882_A
                +1   767     
0247 22         +1   768     RET
                +1   769     ;=============================1000
0248            +1   770     DELAY1000: ;1.085x ((229x4)+5)=999.285
0248 7FE5       +1   771             MOV     R7,#229
024A            +1   772         DELAY1000_A:
024A 00         +1   773             NOP
024B 00         +1   774             NOP
024C DFFC       +1   775             DJNZ    R7,DELAY1000_A
024E 22         +1   776     RET
                +1   777     ;=============================2400
024F            +1   778     DELAY2400: ;1.085x ((245x9)+5)=2397.85
024F 7FF5       +1   779             MOV     R7,#245
0251            +1   780         DELAY2400_A:
0251 00         +1   781             NOP
0252 00         +1   782             NOP
0253 00         +1   783             NOP
0254 00         +1   784             NOP
0255 00         +1   785             NOP
0256 00         +1   786             NOP
0257 00         +1   787             NOP
0258 DFF7       +1   788             DJNZ    R7,DELAY2400_A
025A 22         +1   789     RET
                     790     
                     791         ;$include (..\LED\LED.inc)
                +1   792     ;LED part
                +1   793     ;LED initialization
025B            +1   794     LED_INITIAL:
                +1   795     
025B 22         +1   796     RET
                +1   797     
                +1   798     ;LED process of system flow
025C            +1   799     LED_TASK_PROCESS:
                +1   800     
                +1   801     
                +1   802     
                +1   803     
                +1   804     
                +1   805     
                +1   806     
                +1   807     
                +1   808     
                +1   809     
                +1   810     
                +1   811     
                +1   812     
025C 02025C     +1   813         LJMP     LED_TASK_PROCESS    
025F 22         +1   814     RET        
                     815     
                     816         ;$include (..\Keypad\Keypad.inc)
A51 MACRO ASSEMBLER  MAIN                                                                 04/19/2009 02:07:50 PAGE    14

                +1   817     ;Keypad part
0260            +1   818     KEYPAD_INITIAL:
0260 22         +1   819     RET
                +1   820     
0261            +1   821     KEYPAD_PROCESS:
                +1   822     
0261 020565     +1   823         LJMP     MAIN_KEYPAD_PROCESS_RETURN
                +1   824     ;RET return by youself
                     825     
                     826         ;$include (..\Tube\Tube.inc)
                +1   827     ;Tube part
                +1   828     ;Tube initialization
0264            +1   829     TUBE_INITIAL:
0264 750E00     +1   830         MOV      VAR_TUBE_SHOW_MODE,#0x00
0267 750F51     +1   831         MOV      VAR_TUBE_SHOW_BYTE0,#0x51
026A 751080     +1   832         MOV      VAR_TUBE_SHOW_BYTE1,#0x80
                +1   833     
026D 7801       +1   834         MOV      R0,#0x01
026F 790F       +1   835         MOV      R1,#VAR_TUBE_SHOW_BYTE0
0271 31A6       +1   836         CALL     I2C_READ
0273 22         +1   837     RET
                +1   838     
                +1   839     ;Tube show number
0274            +1   840     TUBE_SHOW_NUMBER:
0274 90030B     +1   841         MOV      DPTR,#TUBE_CHARACTER_TABLE
0277 E8         +1   842         MOV      A,R0
0278 93         +1   843         MOVC     A,@A+DPTR    
0279 F580       +1   844         MOV      DEFINE_TUBE_IO_PORT_DATA,A
027B 22         +1   845     RET
                +1   846     
                +1   847     ;Show number by hex 
027C            +1   848     TUBE_DISPLAY_BY_HEX:
027C E510       +1   849         MOV      A,VAR_TUBE_SHOW_BYTE1
027E 6034       +1   850         JZ       TUBE_DISPLAY_BY_HEX_DISPLAY_TUBE_3
0280 7804       +1   851         MOV      R0,#0x04
                +1   852         
0282            +1   853         TUBE_DISPLAY_BY_HEX_RR_0:
0282 03         +1   854         RR       A
0283 D8FD       +1   855         DJNZ     R0,TUBE_DISPLAY_BY_HEX_RR_0
0285 540F       +1   856         ANL      A,#0x0F
0287 600F       +1   857         JZ       TUBE_DISPLAY_BY_HEX_DISPLAY_TUBE_2
                +1   858         
                +1   859         ;Tube 1
0289 F8         +1   860         MOV      R0,A
028A 5174       +1   861         CALL     TUBE_SHOW_NUMBER
                +1   862             
                +1   863         ;Display
028C 43A0F0     +1   864         ORL      DEFINE_TUBE_IO_PORT_CONTROL,#11110000B
028F C2A7       +1   865         CLR      DEFINE_TUBE_IO_PORT_CONTROL_1
                +1   866     
0291 FA         +1   867         MOV      R2,A
                +1   868     
0292 7801       +1   869         MOV      R0,#DEFINE_TUBE_SLEEP_25MS_BYTE0
0294 7900       +1   870         MOV      R1,#DEFINE_TUBE_SLEEP_25MS_BYTE1
0296 3118       +1   871         CALL     TASK_SLEEP
                +1   872         
0298            +1   873         TUBE_DISPLAY_BY_HEX_DISPLAY_TUBE_2:
0298 EA         +1   874         MOV      A,R2
0299 F8         +1   875         MOV      R0,A
029A E510       +1   876         MOV      A,VAR_TUBE_SHOW_BYTE1
029C 540F       +1   877         ANL      A,#0x0F
029E B80005     +1   878         CJNE     R0,#0x00,TUBE_DISPLAY_BY_HEX_DISPLAY_TUBE_2_VISIBLE
02A1 7003       +1   879         JNZ      TUBE_DISPLAY_BY_HEX_DISPLAY_TUBE_2_VISIBLE
02A3 0202B4     +1   880         LJMP     TUBE_DISPLAY_BY_HEX_DISPLAY_TUBE_3
                +1   881         
02A6            +1   882         TUBE_DISPLAY_BY_HEX_DISPLAY_TUBE_2_VISIBLE:
A51 MACRO ASSEMBLER  MAIN                                                                 04/19/2009 02:07:50 PAGE    15

                +1   883     
                +1   884         ;Display Tube 2
02A6 F8         +1   885         MOV      R0,A

⌨️ 快捷键说明

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