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

📄 led_m16.lst

📁 51单片机的
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
    004F E5CF      LDI	R28,0x5F
    0050 E0D4      LDI	R29,4
    0051 BFCD      OUT	0x3D,R28
    0052 BFDE      OUT	0x3E,R29
    0053 51C4      SUBI	R28,0x14
    0054 40D0      SBCI	R29,0
    0055 EA0A      LDI	R16,0xAA
    0056 8308      STD	Y+0,R16
    0057 2400      CLR	R0
    0058 EAEA      LDI	R30,0xAA
    0059 E0F0      LDI	R31,0
    005A E010      LDI	R17,0
    005B 3CEC      CPI	R30,0xCC
    005C 07F1      CPC	R31,R17
    005D F011      BEQ	0x0060
    005E 9201      ST	R0,Z+
    005F CFFB      RJMP	0x005B
    0060 8300      STD	Z+0,R16
    0061 E5E4      LDI	R30,0x54
    0062 E0F0      LDI	R31,0
    0063 E6A0      LDI	R26,0x60
    0064 E0B0      LDI	R27,0
    0065 E010      LDI	R17,0
    0066 39EE      CPI	R30,0x9E
    0067 07F1      CPC	R31,R17
    0068 F021      BEQ	0x006D
    0069 95C8      LPM
    006A 9631      ADIW	R30,1
    006B 920D      ST	R0,X+
    006C CFF9      RJMP	0x0066
    006D 940E0437  CALL	_main
_exit:
    006F CFFF      RJMP	_exit
FILE: D:\WORK\ELECTR~1\proteus\M167LE~1\c\led.c
(0001) /*
(0002) 2007-01-05 22:30  2007-1-6 23:04
(0003) infrared
(0004) //ICC-AVR application builder : 2006-12-16 0:17:05    2006-12-18 20:04  IR_CDOE
(0005) // Target : M16
(0006) // Crystal: 16.000Mhz //注册大小写识别   开始必须为字母 红外线
(0007) */
(0008) #include <iom16v.h>
(0009) #include <macros.h>
(0010) #include "led.h"
(0011) #include "IR_DATA.H"
(0012) #define IR  6
(0013) //#include "delay.h"
(0014) //用户码
(0015) #define     CUSTOMCODE     9
(0016) //按键码
(0017) #define     POWER_ON       221
(0018) #define     STAND_BY       220
(0019) #define     DMX            216
(0020) #define     AUTO           212
(0021) #define     AUDIO          208
(0022) #define   FADETIME_UP      217
(0023) #define   FADETIME_DOWN    209
(0024) #define   PATTERN_UP       218
(0025) #define   PATTERN_DOWN     210
(0026) 
(0027) 
(0028) //           值       0    1                                            10   11  12   13   14   15
(0029) //                    0    1    2    3    4     5   6    7    8   9     d     f            
(0030) char LED_DATA[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0Xa1,0X0e,0x00,0xff,0xef,0x3f}; //11 FOR "d"
(0031) char iPos,iPreBit,iNowBit,iHight,iLow,iIrMode,iBitCount,bIrCmdOk,bCmdOk,iCmd,iIrData[6];
(0032) char JS_001=0,JS_002=0;
(0033) long  JS_003=0;
(0034) char JS_004=0;
(0035) char JS_005=0;
(0036) char JS_006=0;
(0037) char JS_007=0;
(0038) char JS_008=0;
(0039) long  TIMER1_ICP_T,TIMER1_ICP_T1,TIMER1_ICP_T2;
(0040) char  LED_DISPLAY_V1=10;         // 初始值  显示 为 d001
(0041) char  LED_DISPLAY_V2=0;
(0042) char  LED_DISPLAY_V3=0;
(0043) char  LED_DISPLAY_V4=1;
(0044) char  LED_DISPLAY_V5=14;
(0045) 
(0046) long   JS_PRESS_ON_UP=0;
(0047) long   JS_PRESS_ON_DOWN=0;
(0048) 
(0049) char   JS_TIMER1_ICP_INPUT=0;
(0050) char   OUT_22_LOW;
(0051) char  JS_PRESS_ON_UP_1=0;
(0052) char  JS_PRESS_ON_UP_10000=0;
(0053) char  JS_PRESS_DWON_ON_1=0;
(0054) char  JS_PRESS_ON_DOWN_10000=0;
(0055) int    JS_PRESS_ON_UP_FAST=0;
(0056) int    JS_PRESS_OFF_UP=0;
(0057) char  JS_MODE_MODE=0;
(0058) char  JS_MENU_MODE=0;
(0059) char  JS_UP_MODE=0;
(0060) char  JS_DOWN_MODE=0;
(0061) int    JS_PRESS_OFF_DOWN;
(0062) int    JS_PRESS_ON_DOWN_FAST;
(0063) char  JS_PRESS_DOWN_ON_1;
(0064) 
(0065) char  ICP_TIME=0,ICP_TIME_T1=0;
(0066) char START_ICP_JS_TLOW=0;
(0067) char ICP_INT_SN=0;          //ICP 产生中断标志位
(0068) char KEY_BANK=0;
(0069) char KEY_PAN_MODE_1=0;
(0070) char KEY_PAN_MODE_2=0;
(0071) char KEY_PAN_MODE_3=0;
(0072) char KEY_PAN_3=0;
(0073) char KEY_PAN_4=0;
(0074) char KEY_PAN_5=0;
(0075) char KEY_PAN_6=0;
(0076) char KEY_PAN_7=0;
(0077) char KEY_PAN_8=0;
(0078) 
(0079) char PAN_ICP_INPUT_CHECK=0,JS_ICP_INT=0;
(0080) 
(0081) char N_001=1,SUM=0;
(0082) char IR_CUSTOM_CODE=0;IR_DATA_CODE=0;
(0083) 
(0084) // 共阳极用 
(0085) void port_init(void)
(0086) {
(0087)  PORTA = 0xFF;
_port_init:
    0070 EF8F      LDI	R24,0xFF
    0071 BB8B      OUT	0x1B,R24
(0088)  DDRA  = 0xFF;
    0072 BB8A      OUT	0x1A,R24
(0089)  PORTB = 0x1F;
    0073 E18F      LDI	R24,0x1F
    0074 BB88      OUT	0x18,R24
(0090)  DDRB  = 0x1F;
    0075 BB87      OUT	0x17,R24
(0091)  PORTC = 0x1F; //m103 output only
    0076 BB85      OUT	0x15,R24
(0092)  DDRC  = 0x10;
    0077 E180      LDI	R24,0x10
    0078 BB84      OUT	0x14,R24
(0093)  PORTD = 0x00;
    0079 2422      CLR	R2
    007A BA22      OUT	0x12,R2
(0094)  DDRD  = 0x00;
    007B BA21      OUT	0x11,R2
(0095) }
    007C 9508      RET
(0096) 
(0097) //Watchdog initialize
(0098) // prescale: 16K 
(0099) //void watchdog_init(void)
(0100) //{
(0101)  //WDR(); //this prevents a timout on enabling
(0102)  //WDTCR = 0x08; //WATCHDOG ENABLED - dont forget to issue WDRs
(0103) //}       
(0104) //Watchdog initialize
(0105) // prescale: 2048K
(0106) void watchdog_init(void)
(0107) {
(0108)  WDR(); //this prevents a timout on enabling
_watchdog_init:
    007D 95A8      WDR
(0109)  WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs
    007E E08F      LDI	R24,0xF
    007F BD81      OUT	0x21,R24
(0110) }
    0080 9508      RET
(0111) #pragma interrupt_handler eeprom_ready_isr:16
(0112) void eeprom_ready_isr(void)
(0113) {
(0114)  //eeprom ready event
(0115) }
_eeprom_ready_isr:
    0081 9518      RETI
(0116) 
(0117) /////////////////////////TIMER0/////////////////////////////////////////////////////////////
(0118) //TIMER0 initialize - prescale:8
(0119) // WGM: Normal
(0120) // desired value: 100uSec
(0121) // actual value: 100.000uSec (0.0%)
(0122) void timer0_init(void)
(0123) {
(0124)  TCCR0 = 0x00; //stop
_timer0_init:
    0082 2422      CLR	R2
    0083 BE23      OUT	0x33,R2
(0125)  TCNT0 = 0xCE; //set count
    0084 EC8E      LDI	R24,0xCE
    0085 BF82      OUT	0x32,R24
(0126)  OCR0  = 0x32;  //set compare
    0086 E382      LDI	R24,0x32
    0087 BF8C      OUT	0x3C,R24
(0127)  TCCR0 = 0x02; //start timer
    0088 E082      LDI	R24,2
    0089 BF83      OUT	0x33,R24
(0128) }
    008A 9508      RET
_timer0_ovf_isr:
    008B 940E0631  CALL	push_lset
    008D 940E062D  CALL	push_gset2
    008F 9724      SBIW	R28,4
(0129) 
(0130) #pragma interrupt_handler timer0_ovf_isr:10
(0131) void timer0_ovf_isr(void)
(0132) {
(0133)   TCNT0 = 0xCE; //reload counter value  100us
    0090 EC8E      LDI	R24,0xCE
    0091 BF82      OUT	0x32,R24
(0134)   LED_SCAN(); 
    0092 D2E4      RCALL	_LED_SCAN
(0135)   KEY_CHK(); 
    0093 D084      RCALL	_KEY_CHK
(0136)   CheckIR();  
    0094 D3D1      RCALL	_CheckIR
(0137)    JS_003=++JS_003;                //KEY_CHECK 
(0138)    TEST();
    0095 E041      LDI	R20,1
    0096 E050      LDI	R21,0
    0097 E060      LDI	R22,0
    0098 E070      LDI	R23,0
    0099 90400074  LDS	R4,0x74
    009B 90500075  LDS	R5,0x75
    009D 90200072  LDS	R2,0x72
    009F 90300073  LDS	R3,0x73
    00A1 0E24      ADD	R2,R20
    00A2 1E35      ADC	R3,R21
    00A3 1E46      ADC	R4,R22
    00A4 1E57      ADC	R5,R23
    00A5 01FE      MOVW	R30,R28
    00A6 8220      STD	Z+0,R2
    00A7 8231      STD	Z+1,R3
    00A8 8242      STD	Z+2,R4
    00A9 8253      STD	Z+3,R5
    00AA 01FE      MOVW	R30,R28
    00AB 8020      LDD	R2,Z+0
    00AC 8031      LDD	R3,Z+1
    00AD 8042      LDD	R4,Z+2
    00AE 8053      LDD	R5,Z+3
    00AF 92300073  STS	0x73,R3
    00B1 92200072  STS	0x72,R2
    00B3 92500075  STS	0x75,R5
    00B5 92400074  STS	0x74,R4
    00B7 01FE      MOVW	R30,R28
    00B8 8020      LDD	R2,Z+0
    00B9 8031      LDD	R3,Z+1
    00BA 8042      LDD	R4,Z+2
    00BB 8053      LDD	R5,Z+3
    00BC 92300073  STS	0x73,R3
    00BE 92200072  STS	0x72,R2
    00C0 92500075  STS	0x75,R5
    00C2 92400074  STS	0x74,R4
    00C4 D006      RCALL	_TEST
(0139)    //display_times();         //TEST USE
(0140)   
(0141)   
(0142)    
(0143) }
    00C5 9624      ADIW	R28,4
    00C6 940E0613  CALL	pop_gset2
    00C8 940E0648  CALL	pop_lset
    00CA 9518      RETI
_TEST:
    00CB 940E062D  CALL	push_gset2
(0144) /////////////////test/////////////////////////////////////
(0145) void  TEST()
(0146) {
(0147)   //LED_DISPLAY_V4=8;          //TEST
(0148)   if (JS_003==10000)
    00CD E140      LDI	R20,0x10
    00CE E257      LDI	R21,0x27
    00CF E060      LDI	R22,0
    00D0 E070      LDI	R23,0
    00D1 90400074  LDS	R4,0x74
    00D3 90500075  LDS	R5,0x75
    00D5 90200072  LDS	R2,0x72
    00D7 90300073  LDS	R3,0x73
    00D9 1624      CP	R2,R20
    00DA 0635      CPC	R3,R21
    00DB 0646      CPC	R4,R22
    00DC 0657      CPC	R5,R23
    00DD F421      BNE	0x00E2
(0149)            {
(0150)            LED_DISPLAY_V5=14;
    00DE E08E      LDI	R24,0xE
    00DF 9380007F  STS	0x7F,R24
(0151)              
(0152)            }  
    00E1 C020      RJMP	0x0102
(0153)     else if (JS_003==20000)  
    00E2 E240      LDI	R20,0x20
    00E3 E45E      LDI	R21,0x4E
    00E4 E060      LDI	R22,0
    00E5 E070      LDI	R23,0
    00E6 90400074  LDS	R4,0x74
    00E8 90500075  LDS	R5,0x75
    00EA 90200072  LDS	R2,0x72
    00EC 90300073  LDS	R3,0x73
    00EE 1624      CP	R2,R20
    00EF 0635      CPC	R3,R21
    00F0 0646      CPC	R4,R22
    00F1 0657      CPC	R5,R23
    00F2 F479      BNE	0x0102
(0154)          {
(0155)          JS_003=0;  
(0156)          LED_DISPLAY_V5=13;
    00F3 E040      LDI	R20,0
    00F4 E050      LDI	R21,0
    00F5 E060      LDI	R22,0
    00F6 E070      LDI	R23,0
    00F7 93500073  STS	0x73,R21
    00F9 93400072  STS	0x72,R20
    00FB 93700075  STS	0x75,R23
    00FD 93600074  STS	0x74,R22
    00FF E08D      LDI	R24,0xD
    0100 9380007F  STS	0x7F,R24
(0157)          } 
(0158) }
    0102 940E0613  CALL	pop_gset2
    0104 9508      RET
(0159) /////////////////////////timer2///////////////////////////////////////////////////////////////////
(0160) //TIMER2 initialize - prescale:32
(0161) // WGM: Normal
(0162) // desired value: 10uSec
(0163) // actual value: 10.000uSec (0.0%)
(0164) void timer2_init(void)
(0165) {
(0166)  TCCR2 = 0x00; //stop
_timer2_init:
    0105 2422      CLR	R2
    0106 BC25      OUT	0x25,R2
(0167)  ASSR  = 0x00; //set async mode
    0107 BC22      OUT	0x22,R2
(0168)  TCNT2 = 0xFB; //setup
    0108 EF8B      LDI	R24,0xFB
    0109 BD84      OUT	0x24,R24
(0169)  OCR2  = 0x05;
    010A E085      LDI	R24,5
    010B BD83      OUT	0x23,R24
(0170)  TCCR2 = 0x03; //start
    010C E083      LDI	R24,3
    010D BD85      OUT	0x25,R24
(0171) }
    010E 9508      RET
_timer2_ovf_isr:
    010F 938A      ST	R24,-Y
    0110 B78F      IN	R24,0x3F
    0111 938A      ST	R24,-Y
(0172) 
(0173) #pragma interrupt_handler timer2_ovf_isr:5
(0174) void timer2_ovf_isr(void)   //10us
(0175) {
(0176)  TCNT2 = 0xFB; //reload counter value
    0112 EF8B      LDI	R24,0xFB
    0113 BD84      OUT	0x24,R24
(0177)  //ICP_INT_JS();
(0178)  //ICP_INT_CLR_JS();
(0179)  
(0180) }
    0114 9189      LD	R24,Y+
    0115 BF8F      OUT	0x3F,R24
    0116 9189      LD	R24,Y+
    0117 9518      RETI
(0181) /////////////////////////KEY_CHK/////////////////////////////////////////////////////////////
(0182) 
(0183) void KEY_CHK()
(0184) {
(0185) 
(0186)     
(0187) KEY_CHK_MODE();                  // 调用   KEY_CHK_MODE
_KEY_CHK:
    0118 D003      RCALL	_KEY_CHK_MODE
(0188) KEY_CHK_MENU();                  // 调用   KEY_CHK_MENU
    0119 D045      RCALL	_KEY_CHK_MENU
(0189) KEY_CHK_UP();                    // 调用   KEY_CHK_UP
    011A D045      RCALL	_KEY_CHK_UP
(0190) KEY_CHK_DOWN();                  // 调用   KEY_CHK_DOWN		
(0191) }
    011B C14E      RJMP	_KEY_CHK_DOWN
(0192) //////////////////////////MODE///////////////////////////////////////////////////////////
(0193) void KEY_CHK_MODE()                   //100us /times
(0194) {
(0195)     KEY_BANK=KEY_INPUT;               // 取PINC值
(0196)     KEY_BANK&=0X01;                   // 取mode 值	
(0197) if (KEY_BANK==0)     //有按下 执行   
_KEY_CHK_MODE:
    011C B223      IN	R2,0x13
    011D 92200099  STS	0x99,R2
    011F 2D82      MOV	R24,R2
    0120 7081      ANDI	R24,1
    0121 93800099  STS	0x99,R24
    0123 2388      TST	R24
    0124 F529      BNE	0x014A
(0198)    {      //TEST--------OK------------->>>>  
(0199)        KEY_BANK=1;               
(0200)        JS_004=++JS_004;
(0201)        if (JS_004==1)
    0125 E081      LDI	R24,1
    0126 93800099  STS	0x99,R24
    0128 91800076  LDS	R24,0x76
    012A 5F8F      SUBI	R24,0xFF
    012B 2E28      MOV	R2,R24
    012C 92200076  STS	0x76,R2
    012E 92200076  STS	0x76,R2
    0130 3081      CPI	R24,1
    0131 F449      BNE	0x013B
(0202)                         {
(0203)   		 		  //LED_DISPLAY_V1=11;
(0204)  	 			  LED_DISPLAY_V2=0;

⌨️ 快捷键说明

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