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

📄 irda.ls1

📁 本程序利用C代码中插入汇编语言实现了51单片机红外解码程序
💻 LS1
📖 第 1 页 / 共 2 页
字号:
                     221     ; dispaly(unsigned char keynum);
                     222     ; void delay1ms(unsigned int count);
                     223     ; /*分别存放红外线译码后的数据*/
                     224     ; unsigned char data e1 _at_ 0x1A; /*存放低8位地址码*/      
                     225     ; unsigned char data w1 _at_ 0x1B; /*存放高8位地址码*/ 
                     226     ; unsigned char data e2 _at_ 0x1C; /*存放8位数据码*/ 
                     227     ; unsigned char data w2 _at_ 0x1D; /*存放8位数据反码*/ 
                     228     ; //sbit IrInput=P3^2;       //红外线输入引脚,可自定义
                     229     ; unsigned char LEDdata[]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};//0-9段码
                     230     ; /*代表遥控器上的1--28按键红外码值*/
                     231     ; unsigned char Irda_data[]={0x5f,0x50,0x5d,0x44,0x41,0x0a,0x42,0x46,0x47,0x49,
                     232     ;                            0x05,0x06,0x07,0x09,0x45,0x03,0x5c,0x1e,0x5e,0x02,
                     233     ;                            0x58,0x1a,0x5b,0x01,0x1b,0x59,0x5a,0x18};//1--28
                     234     ; /*********************主程序***************************/
                     235     ; 
                     236     ; void main(void)
                     237     
----                 238             RSEG  ?PR?main?IRDA
0000                 239     main:
                     240             USING   0
                     241                             ; SOURCE LINE # 31
                     242     ; {
                     243                             ; SOURCE LINE # 32
                     244     ; unsigned char i;
                     245     ;       IT0 = 1; //INT0下降沿有效
                     246                             ; SOURCE LINE # 34
0000 D288            247             SETB    IT0
                     248     ;       EX0 = 1; //开INT0中断;
                     249                             ; SOURCE LINE # 35
0002 D2A8            250             SETB    EX0
                     251     ;       P0=0xff;
                     252                             ; SOURCE LINE # 36
0004 7580FF          253             MOV     P0,#0FFH
                     254     ;       P1=0xff;
                     255                             ; SOURCE LINE # 37
0007 7590FF          256             MOV     P1,#0FFH
A51 MACRO ASSEMBLER  IRDA                                                                 11/25/2005 22:56:48 PAGE     5

                     257     ;       P2=0xff;
                     258                             ; SOURCE LINE # 38
000A 75A0FF          259             MOV     P2,#0FFH
                     260     ;       P3=0xff;
                     261                             ; SOURCE LINE # 39
000D 75B0FF          262             MOV     P3,#0FFH
                     263     ;       EA = 1; //允许CPU中断
                     264                             ; SOURCE LINE # 40
0010 D2AF            265             SETB    EA
0012                 266     ?C0001:
                     267     ;       while(1)
                     268                             ; SOURCE LINE # 41
                     269     ;     {
                     270                             ; SOURCE LINE # 42
                     271     ;        if(keynumber!=0xff)
                     272                             ; SOURCE LINE # 43
0012 E500     F      273             MOV     A,keynumber
0014 F4              274             CPL     A
0015 60FB            275             JZ      ?C0001
                     276     ;          {
                     277                             ; SOURCE LINE # 44
                     278     ;            for(i=0;i<10;i++)
                     279                             ; SOURCE LINE # 45
0017 E4              280             CLR     A
0018 F500     F      281             MOV     i?040,A
001A                 282     ?C0004:
                     283     ;            dispaly(keynumber);
                     284                             ; SOURCE LINE # 46
001A AF00     F      285             MOV     R7,keynumber
001C 120000   F      286             LCALL   _dispaly
001F 0500     F      287             INC     i?040
0021 E500     F      288             MOV     A,i?040
0023 C3              289             CLR     C
0024 940A            290             SUBB    A,#0AH
0026 40F2            291             JC      ?C0004
0028                 292     ?C0005:
                     293     ;            keynumber=0XFF;   
                     294                             ; SOURCE LINE # 47
0028 7500FF   F      295             MOV     keynumber,#0FFH
                     296     ;          }
                     297                             ; SOURCE LINE # 48
                     298     ; 
                     299     ;     }                      
                     300                             ; SOURCE LINE # 50
002B 80E5            301             SJMP    ?C0001
                     302     ; END OF main
                     303     
                     304     ; 
                     305     ; }
                     306     ; 
                     307     ; /*******************红外线解码子程序*******************/
                     308     ; void Irda(void)
                     309     
----                 310             RSEG  ?PR?Irda?IRDA
0000                 311     Irda:
                     312                             ; SOURCE LINE # 55
                     313     ;  { 
                     314                             ; SOURCE LINE # 56
                     315     ;      #pragma asm 
                     316     ; SB:
0000                 317               SB:
                     318     ;     MOV R4,#8   ;8毫秒为高电平错误
0000 7C08            319               MOV R4,#8   ;8毫秒为高电平错误
                     320     ; SBA:
0002                 321               SBA:
                     322     ;     MOV R5,#250
A51 MACRO ASSEMBLER  IRDA                                                                 11/25/2005 22:56:48 PAGE     6

0002 7DFA            323               MOV R5,#250
                     324     ; SBB:
0004                 325               SBB:
                     326     ;     JB P3.2,SXB1
0004 20B208          327               JB P3.2,SXB1
                     328     ;     DJNZ R5,SBB
0007 DDFB            329               DJNZ R5,SBB
                     330     ;     DJNZ R4,SBA
0009 DCF7            331               DJNZ R4,SBA
                     332     ;     MOV R4,#2
000B 7C02            333               MOV R4,#2
                     334     ;     JMP SBC
000D 8008            335               JMP SBC
                     336     ; SXB1:
000F                 337               SXB1:
                     338     ;     MOV R5,#5
000F 7D05            339               MOV R5,#5
                     340     ; SXB2:             ;去掉20US的尖峰干扰信号
0011                 341               SXB2:             ;去掉20US的尖峰干扰信号
                     342     ;     JNB P3.2,SBB
0011 30B2F0          343               JNB P3.2,SBB
                     344     ;     DJNZ R5,SXB2
0014 DDFB            345               DJNZ R5,SXB2
                     346     ;     RET
0016 22              347               RET
                     348     ; SBC:
0017                 349               SBC:
                     350     ;     MOV R5,#250
0017 7DFA            351               MOV R5,#250
                     352     ; SB1:
0019                 353               SB1:
                     354     ;       JB P3.2,SB2     ;2MS内不为高电平错误(监测9MS的低电平引导码)
0019 20B205          355               JB P3.2,SB2   ;2MS内不为高电平错误(监测9MS的低电平引导码)
                     356     ;     DJNZ R5,SB1
001C DDFB            357               DJNZ R5,SB1
                     358     ;     DJNZ R4,SBC
001E DCF7            359               DJNZ R4,SBC
                     360     ;     RET
0020 22              361               RET
                     362     ; SB2:                ;去掉20US的尖峰干扰信号
0021                 363               SB2:                ;去掉20US的尖峰干扰信号
                     364     ;     MOV R5,#5
0021 7D05            365               MOV R5,#5
                     366     ; SB2_A:
0023                 367               SB2_A:
                     368     ;     JNB P3.2,SB1
0023 30B2F3          369               JNB P3.2,SB1
                     370     ;     DJNZ R5,SB2_A
0026 DDFB            371               DJNZ R5,SB2_A
                     372     ;     MOV R4,#3
0028 7C03            373               MOV R4,#3
                     374     ; SB2_1:
002A                 375               SB2_1:
                     376     ;     MOV R5,#250
002A 7DFA            377               MOV R5,#250
                     378     ; SB3:                 ;监测4.5MS高电平,如3MS内出现低电平错误
002C                 379               SB3:                 ;监测4.5MS高电平,如3MS内出现低电平错误
                     380     ;     JNB P3.2,SXC
002C 30B208          381               JNB P3.2,SXC
                     382     ;     DJNZ R5,SB3
002F DDFB            383               DJNZ R5,SB3
                     384     ;     DJNZ R4,SB2_1
0031 DCF7            385               DJNZ R4,SB2_1
                     386     ;     MOV R4,#2
0033 7C02            387               MOV R4,#2
                     388     ;     JMP SB3_1
A51 MACRO ASSEMBLER  IRDA                                                                 11/25/2005 22:56:48 PAGE     7

0035 8008            389               JMP SB3_1
                     390     ; SXC:                 ;去掉20US的尖峰干扰信号
0037                 391               SXC:                 ;去掉20US的尖峰干扰信号
                     392     ;     MOV R5,#5
0037 7D05            393               MOV R5,#5
                     394     ; SXC1:
0039                 395               SXC1:
                     396     ;     JB P3.2,SB3
0039 20B2F0          397               JB P3.2,SB3
                     398     ;     DJNZ R5,SXC1
003C DDFB            399               DJNZ R5,SXC1
                     400     ;     RET
003E 22              401               RET
                     402     ; SB3_1:                ;监测4.5MS高电平,如5MS内不为低电平错误
003F                 403               SB3_1:                ;监测4.5MS高电平,如5MS内不为低电平错误
                     404     ;     MOV R5,#250
003F 7DFA            405               MOV R5,#250
                     406     ; SB3_2:
0041                 407               SB3_2:
                     408     ;     JNB P3.2,SB4
0041 30B205          409               JNB P3.2,SB4
                     410     ;     DJNZ R5,SB3_2
0044 DDFB            411               DJNZ R5,SB3_2
                     412     ;     DJNZ R4,SB3_1
0046 DCF7            413               DJNZ R4,SB3_1
                     414     ;     RET
0048 22              415               RET
                     416     ; SB4:                   ;去掉20US的尖峰干扰信号
0049                 417               SB4:                   ;去掉20US的尖峰干扰信号
                     418     ;     MOV R5,#5
0049 7D05            419               MOV R5,#5
                     420     ; SB4_1:
004B                 421               SB4_1:
                     422     ;     JB P3.2,SB3_2
004B 20B2F3          423               JB P3.2,SB3_2
                     424     ;     DJNZ R5,SB4_1
004E DDFB            425               DJNZ R5,SB4_1
                     426     ;       MOV R1,#1AH     ;设定1AH为起始RAM区
0050 791A            427               MOV R1,#1AH   ;设定1AH为起始RAM区
                     428     ;       MOV R2,#4
0052 7A04            429               MOV R2,#4
                     430     ; PP: MOV R3,#8
0054 7B08            431               PP: MOV R3,#8
                     432     ; JJJJ:
0056                 433               JJJJ:
                     434     ;     MOV R5,#250
0056 7DFA            435               MOV R5,#250
                     436     ; JJJJ2:               ;1MS内不为低电平错误
0058                 437               JJJJ2:               ;1MS内不为低电平错误
                     438     ;     JB P3.2,JJJJ3
0058 20B203          439               JB P3.2,JJJJ3
                     440     ;     DJNZ R5,JJJJ2
005B DDFB            441               DJNZ R5,JJJJ2
                     442     ;     RET
005D 22              443               RET
                     444     ; JJJJ3:
005E                 445               JJJJ3:
                     446     ;       LCALL YS1       ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
005E 120000   F      447               LCALL YS1     ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
                     448     ;       MOV C,P3.2      ;将P3.7引脚此时的电平状态0或1存入C中
0061 A2B2            449               MOV C,P3.2    ;将P3.7医糯耸钡牡缙阶刺

⌨️ 快捷键说明

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