AVRASM ver. 1.52 test2.asm Sat Mar 19 12:25:08 2005 ;CodeVisionAVR C Compiler V1.23.8c Professional ;(C) Copyright 1998-2003 HP InfoTech s.r.l. ;http://www.hpinfotech.ro ;e-mail:office@hpinfotech.ro ;Chip type : ATtiny26L ;Clock frequency : 1,000000 MHz ;Memory model : Tiny ;Optimize for : Size ;(s)printf features : int, width ;External SRAM size : 0 ;Data Stack size : 32 ;Promote char to int : No ;char is unsigned : Yes ;8 bit enums : Yes ;Automatic register allocation : On ;Use AVR Studio Terminal I/O : No .LISTMAC .EQU UDRE=0x5 .EQU RXC=0x7 .EQU USR=0xB .EQU UDR=0xC .EQU EERE=0x0 .EQU EEWE=0x1 .EQU EEMWE=0x2 .EQU SPSR=0xE .EQU SPDR=0xF .EQU EECR=0x1C .EQU EEDR=0x1D .EQU EEARL=0x1E .EQU EEARH=0x1F .EQU WDTCR=0x21 .EQU MCUCR=0x35 .EQU RAMPZ=0x3B .EQU SPL=0x3D .EQU SPH=0x3E .EQU SREG=0x3F .DEF R0X0=R0 .DEF R0X1=R1 .DEF R0X2=R2 .DEF R0X3=R3 .DEF R0X4=R4 .DEF R0X5=R5 .DEF R0X6=R6 .DEF R0X7=R7 .DEF R0X8=R8 .DEF R0X9=R9 .DEF R0XA=R10 .DEF R0XB=R11 .DEF R0XC=R12 .DEF R0XD=R13 .DEF R0XE=R14 .DEF R0XF=R15 .DEF R0X10=R16 .DEF R0X11=R17 .DEF R0X12=R18 .DEF R0X13=R19 .DEF R0X14=R20 .DEF R0X15=R21 .DEF R0X16=R22 .DEF R0X17=R23 .DEF R0X18=R24 .DEF R0X19=R25 .DEF R0X1A=R26 .DEF R0X1B=R27 .DEF R0X1C=R28 .DEF R0X1D=R29 .DEF R0X1E=R30 .DEF R0X1F=R31 .EQU __se_bit=0x20 .EQU __sm_mask=0x18 .EQU __sm_powerdown=0x10 .MACRO __CPD1N CPI R30,LOW(@0) LDI R26,HIGH(@0) CPC R31,R26 LDI R26,BYTE3(@0) CPC R22,R26 LDI R26,BYTE4(@0) CPC R23,R26 .ENDM .MACRO __CPD2N CPI R26,LOW(@0) LDI R30,HIGH(@0) CPC R27,R30 LDI R30,BYTE3(@0) CPC R24,R30 LDI R30,BYTE4(@0) CPC R25,R30 .ENDM .MACRO __CPWRR CP R@0,R@2 CPC R@1,R@3 .ENDM .MACRO __CPWRN CPI R@0,LOW(@2) LDI R30,HIGH(@2) CPC R@1,R30 .ENDM .MACRO __ADDD1N SUBI R30,LOW(-@0) SBCI R31,HIGH(-@0) SBCI R22,BYTE3(-@0) SBCI R23,BYTE4(-@0) .ENDM .MACRO __ADDD2N SUBI R26,LOW(-@0) SBCI R27,HIGH(-@0) SBCI R24,BYTE3(-@0) SBCI R25,BYTE4(-@0) .ENDM .MACRO __SUBD1N SUBI R30,LOW(@0) SBCI R31,HIGH(@0) SBCI R22,BYTE3(@0) SBCI R23,BYTE4(@0) .ENDM .MACRO __SUBD2N SUBI R26,LOW(@0) SBCI R27,HIGH(@0) SBCI R24,BYTE3(@0) SBCI R25,BYTE4(@0) .ENDM .MACRO __ANDD1N ANDI R30,LOW(@0) ANDI R31,HIGH(@0) ANDI R22,BYTE3(@0) ANDI R23,BYTE4(@0) .ENDM .MACRO __ORD1N ORI R30,LOW(@0) ORI R31,HIGH(@0) ORI R22,BYTE3(@0) ORI R23,BYTE4(@0) .ENDM .MACRO __DELAY_USB LDI R24,LOW(@0) __DELAY_USB_LOOP: DEC R24 BRNE __DELAY_USB_LOOP .ENDM .MACRO __DELAY_USW LDI R24,LOW(@0) LDI R25,HIGH(@0) __DELAY_USW_LOOP: SBIW R24,1 BRNE __DELAY_USW_LOOP .ENDM .MACRO __CLRD1S CLR R30 STD Y+@0,R30 STD Y+@0+1,R30 STD Y+@0+2,R30 STD Y+@0+3,R30 .ENDM .MACRO __GETD1S LDD R30,Y+@0 LDD R31,Y+@0+1 LDD R22,Y+@0+2 LDD R23,Y+@0+3 .ENDM .MACRO __PUTD1S STD Y+@0,R30 STD Y+@0+1,R31 STD Y+@0+2,R22 STD Y+@0+3,R23 .ENDM .MACRO __POINTB1MN LDI R30,LOW(@0+@1) .ENDM .MACRO __POINTW1MN LDI R30,LOW(@0+@1) LDI R31,HIGH(@0+@1) .ENDM .MACRO __POINTW1FN LDI R30,LOW(2*@0+@1) LDI R31,HIGH(2*@0+@1) .ENDM .MACRO __POINTB2MN LDI R26,LOW(@0+@1) .ENDM .MACRO __POINTW2MN LDI R26,LOW(@0+@1) LDI R27,HIGH(@0+@1) .ENDM .MACRO __GETD1N LDI R30,LOW(@0) LDI R31,HIGH(@0) LDI R22,BYTE3(@0) LDI R23,BYTE4(@0) .ENDM .MACRO __GETD2N LDI R26,LOW(@0) LDI R27,HIGH(@0) LDI R24,BYTE3(@0) LDI R25,BYTE4(@0) .ENDM .MACRO __GETD2S LDD R26,Y+@0 LDD R27,Y+@0+1 LDD R24,Y+@0+2 LDD R25,Y+@0+3 .ENDM .MACRO __GETB1MN LDS R30,@0+@1 .ENDM .MACRO __GETW1MN LDS R30,@0+@1 LDS R31,@0+@1+1 .ENDM .MACRO __GETD1MN LDS R30,@0+@1 LDS R31,@0+@1+1 LDS R22,@0+@1+2 LDS R23,@0+@1+3 .ENDM .MACRO __GETBRMN LDS R@2,@0+@1 .ENDM .MACRO __GETWRMN LDS R@2,@0+@1 LDS R@3,@0+@1+1 .ENDM .MACRO __GETB2MN LDS R26,@0+@1 .ENDM .MACRO __GETW2MN LDS R26,@0+@1 LDS R27,@0+@1+1 .ENDM .MACRO __GETD2MN LDS R26,@0+@1 LDS R27,@0+@1+1 LDS R24,@0+@1+2 LDS R25,@0+@1+3 .ENDM .MACRO __PUTB1MN STS @0+@1,R30 .ENDM .MACRO __PUTW1MN STS @0+@1,R30 STS @0+@1+1,R31 .ENDM .MACRO __PUTD1MN STS @0+@1,R30 STS @0+@1+1,R31 STS @0+@1+2,R22 STS @0+@1+3,R23 .ENDM .MACRO __PUTBMRN STS @0+@1,R@2 .ENDM .MACRO __PUTWMRN STS @0+@1,R@2 STS @0+@1+1,R@3 .ENDM .MACRO __GETW1R MOV R30,R@0 MOV R31,R@1 .ENDM .MACRO __GETW2R MOV R26,R@0 MOV R27,R@1 .ENDM .MACRO __GETWRN LDI R@0,LOW(@2) LDI R@1,HIGH(@2) .ENDM .MACRO __PUTW1R MOV R@0,R30 MOV R@1,R31 .ENDM .MACRO __PUTW2R MOV R@0,R26 MOV R@1,R27 .ENDM .MACRO __ADDWRN SUBI R@0,LOW(-@2) SBCI R@1,HIGH(-@2) .ENDM .MACRO __ADDWRR ADD R@0,R@2 ADC R@1,R@3 .ENDM .MACRO __SUBWRN SUBI R@0,LOW(@2) SBCI R@1,HIGH(@2) .ENDM .MACRO __SUBWRR SUB R@0,R@2 SBC R@1,R@3 .ENDM .MACRO __ANDWRN ANDI R@0,LOW(@2) ANDI R@1,HIGH(@2) .ENDM .MACRO __ANDWRR AND R@0,R@2 AND R@1,R@3 .ENDM .MACRO __ORWRN ORI R@0,LOW(@2) ORI R@1,HIGH(@2) .ENDM .MACRO __ORWRR OR R@0,R@2 OR R@1,R@3 .ENDM .MACRO __EORWRR EOR R@0,R@2 EOR R@1,R@3 .ENDM .MACRO __GETWRS LDD R@0,Y+@2 LDD R@1,Y+@2+1 .ENDM .MACRO __PUTWSR STD Y+@2,R@0 STD Y+@2+1,R@1 .ENDM .MACRO __MOVEWRR MOV R@0,R@2 MOV R@1,R@3 .ENDM .MACRO __INWR IN R@0,@2 IN R@1,@2+1 .ENDM .MACRO __OUTWR OUT @2+1,R@1 OUT @2,R@0 .ENDM .MACRO __CALL1MN LDS R30,@0+@1 LDS R31,@0+@1+1 ICALL .ENDM .MACRO __NBST BST R@0,@1 IN R30,SREG LDI R31,0x40 EOR R30,R31 OUT SREG,R30 .ENDM .MACRO __PUTB1SN LDD R26,Y+@0 SUBI R26,-@1 ST X,R30 .ENDM .MACRO __PUTW1SN LDD R26,Y+@0 SUBI R26,-@1 ST X+,R30 ST X,R31 .ENDM .MACRO __PUTD1SN LDD R26,Y+@0 SUBI R26,-@1 RCALL __PUTDP1 .ENDM .MACRO __PUTB1SNS LDD R26,Y+@0 SUBI R26,-@1 ST X,R30 .ENDM .MACRO __PUTW1SNS LDD R26,Y+@0 SUBI R26,-@1 ST X+,R30 ST X,R31 .ENDM .MACRO __PUTD1SNS LDD R26,Y+@0 SUBI R26,-@1 RCALL __PUTDP1 .ENDM .MACRO __PUTB1PMN LDS R26,@0 SUBI R26,-@1 ST X,R30 .ENDM .MACRO __PUTW1PMN LDS R26,@0 SUBI R26,-@1 ST X+,R30 ST X,R31 .ENDM .MACRO __PUTD1PMN LDS R26,@0 SUBI R26,-@1 RCALL __PUTDP1 .ENDM .MACRO __PUTB1PMNS LDS R26,@0 SUBI R26,-@1 ST X,R30 .ENDM .MACRO __PUTW1PMNS LDS R26,@0 SUBI R26,-@1 ST X+,R30 ST X,R31 .ENDM .MACRO __PUTD1PMNS LDS R26,@0 SUBI R26,-@1 RCALL __PUTDP1 .ENDM .MACRO __GETB1SX MOV R30,R28 MOV R31,R29 SUBI R30,LOW(-@0) SBCI R31,HIGH(-@0) LD R30,Z .ENDM .MACRO __GETW1SX MOV R30,R28 MOV R31,R29 SUBI R30,LOW(-@0) SBCI R31,HIGH(-@0) LD R0,Z+ LD R31,Z MOV R30,R0 .ENDM .MACRO __GETD1SX MOV R30,R28 MOV R31,R29 SUBI R30,LOW(-@0) SBCI R31,HIGH(-@0) LD R0,Z+ LD R1,Z+ LD R22,Z+ LD R23,Z MOV R30,R0 MOV R31,R1 .ENDM .MACRO __GETB2SX MOV R26,R28 MOV R27,R29 SUBI R26,LOW(-@0) SBCI R27,HIGH(-@0) LD R26,X .ENDM .MACRO __GETW2SX MOV R26,R28 MOV R27,R29 SUBI R26,LOW(-@0) SBCI R27,HIGH(-@0) LD R0,X+ LD R27,X MOV R26,R0 .ENDM .MACRO __GETD2SX MOV R26,R28 MOV R27,R29 SUBI R26,LOW(-@0) SBCI R27,HIGH(-@0) LD R0,X+ LD R1,X+ LD R24,X+ LD R25,X MOV R26,R0 MOV R27,R1 .ENDM .MACRO __GETBRSX MOV R30,R28 MOV R31,R29 SUBI R30,LOW(-@1) SBCI R31,HIGH(-@1) LD R@0,Z .ENDM .MACRO __GETWRSX MOV R30,R28 MOV R31,R29 SUBI R30,LOW(-@2) SBCI R31,HIGH(-@2) LD R@0,Z+ LD R@1,Z .ENDM .MACRO __LSLW8SX MOV R30,R28 MOV R31,R29 SUBI R30,LOW(-@0) SBCI R31,HIGH(-@0) LD R31,Z CLR R30 .ENDM .MACRO __PUTB1SX MOV R26,R28 MOV R27,R29 SUBI R26,LOW(-@0) SBCI R27,HIGH(-@0) ST X,R30 .ENDM .MACRO __PUTW1SX MOV R26,R28 MOV R27,R29 SUBI R26,LOW(-@0) SBCI R27,HIGH(-@0) ST X+,R30 ST X,R31 .ENDM .MACRO __PUTD1SX MOV R26,R28 MOV R27,R29 SUBI R26,LOW(-@0) SBCI R27,HIGH(-@0) ST X+,R30 ST X+,R31 ST X+,R22 ST X,R23 .ENDM .MACRO __CLRW1SX MOV R30,R28 MOV R31,R29 SUBI R30,LOW(-@0) SBCI R31,HIGH(-@0) CLR R0 ST Z+,R0 ST Z,R0 .ENDM .MACRO __CLRD1SX MOV R30,R28 MOV R31,R29 SUBI R30,LOW(-@0) SBCI R31,HIGH(-@0) CLR R0 ST Z+,R0 ST Z+,R0 ST Z+,R0 ST Z,R0 .ENDM .MACRO __PUTB2SX MOV R30,R28 MOV R31,R29 SUBI R30,LOW(-@0) SBCI R31,HIGH(-@0) ST Z,R26 .ENDM .MACRO __PUTW2SX MOV R30,R28 MOV R31,R29 SUBI R30,LOW(-@0) SBCI R31,HIGH(-@0) ST Z+,R26 ST Z,R27 .ENDM .MACRO __PUTBSRX MOV R30,R28 MOV R31,R29 SUBI R30,LOW(-@0) SBCI R31,HIGH(-@0) ST Z,R@1 .ENDM .MACRO __PUTWSRX MOV R30,R28 MOV R31,R29 SUBI R30,LOW(-@2) SBCI R31,HIGH(-@2) ST Z+,R@0 ST Z,R@1 .ENDM .MACRO __PUTB1SNX MOV R26,R28 MOV R27,R29 SUBI R26,LOW(-@0) SBCI R27,HIGH(-@0) LD R0,X+ LD R27,X MOV R26,R0 SUBI R26,LOW(-@1) SBCI R27,HIGH(-@1) ST X,R30 .ENDM .MACRO __PUTW1SNX MOV R26,R28 MOV R27,R29 SUBI R26,LOW(-@0) SBCI R27,HIGH(-@0) LD R0,X+ LD R27,X MOV R26,R0 SUBI R26,LOW(-@1) SBCI R27,HIGH(-@1) ST X+,R30 ST X,R31 .ENDM .MACRO __PUTD1SNX MOV R26,R28 MOV R27,R29 SUBI R26,LOW(-@0) SBCI R27,HIGH(-@0) LD R0,X+ LD R27,X MOV R26,R0 SUBI R26,LOW(-@1) SBCI R27,HIGH(-@1) ST X+,R30 ST X+,R31 ST X+,R22 ST X,R23 .ENDM .CSEG .ORG 0 .INCLUDE "test2.vec" ;INTERRUPT VECTORS 000000 c00c RJMP __RESET 000001 cffe RJMP 0 000002 cffd RJMP 0 000003 cffc RJMP 0 000004 cffb RJMP 0 000005 cffa RJMP 0 000006 cff9 RJMP 0 000007 cff8 RJMP 0 000008 cff7 RJMP 0 000009 cff6 RJMP 0 00000a cff5 RJMP 0 00000b cff4 RJMP 0 .INCLUDE "test2.inc" __GLOBAL_INI_TBL: .DW 0 00000c 0000 __RESET: 00000d 94f8 CLI 00000e 27ee CLR R30 00000f bbec OUT EECR,R30 000010 bfe5 OUT MCUCR,R30 ;DISABLE WATCHDOG 000011 e1f8 LDI R31,0x18 000012 bdf1 OUT WDTCR,R31 000013 e1f0 LDI R31,0x10 000014 bdf1 OUT WDTCR,R31 ;CLEAR R2-R14 000015 e08d LDI R24,13 000016 e0a2 LDI R26,2 __CLEAR_REG: 000017 93ed ST X+,R30 000018 958a DEC R24 000019 f7e9 BRNE __CLEAR_REG ;CLEAR SRAM 00001a e880 LDI R24,LOW(0x80) 00001b e6a0 LDI R26,0x60 __CLEAR_SRAM: 00001c 93ed ST X+,R30 00001d 958a DEC R24 00001e f7e9 BRNE __CLEAR_SRAM ;GLOBAL VARIABLES INITIALIZATION 00001f e1e8 LDI R30,LOW(__GLOBAL_INI_TBL*2) 000020 e0f0 LDI R31,HIGH(__GLOBAL_INI_TBL*2) __GLOBAL_INI_NEXT: 000021 95c8 LPM 000022 9631 ADIW R30,1 000023 2c10 MOV R1,R0 000024 95c8 LPM 000025 9631 ADIW R30,1 000026 2f6e MOV R22,R30 000027 2f7f MOV R23,R31 000028 2df0 MOV R31,R0 000029 2de1 MOV R30,R1 00002a 9730 SBIW R30,0 00002b f0a1 BREQ __GLOBAL_INI_END 00002c 95c8 LPM 00002d 9631 ADIW R30,1 00002e 2da0 MOV R26,R0 00002f 95c8 LPM 000030 9631 ADIW R30,1 000031 2db0 MOV R27,R0 000032 95c8 LPM 000033 9631 ADIW R30,1 000034 2d80 MOV R24,R0 000035 95c8 LPM 000036 9631 ADIW R30,1 000037 2d90 MOV R25,R0 __GLOBAL_INI_LOOP: 000038 95c8 LPM 000039 9631 ADIW R30,1 00003a 920d ST X+,R0 00003b 9701 SBIW R24,1 00003c f7d9 BRNE __GLOBAL_INI_LOOP 00003d 2fe6 MOV R30,R22 00003e 2ff7 MOV R31,R23 00003f cfe1 RJMP __GLOBAL_INI_NEXT __GLOBAL_INI_END: ;STACK POINTER INITIALIZATION 000040 edef LDI R30,LOW(0xDF) 000041 bfed OUT SPL,R30 ;DATA STACK POINTER INITIALIZATION 000042 e8c0 LDI R28,LOW(0x80) 000043 e0d0 LDI R29,HIGH(0x80) 000044 RJMP _main error : Undefined variable referenced .ESEG .ORG 0 .DB 0 ; FIRST EEPROM LOCATION NOT USED, SEE ATMEL ERRATA SHEETS 000000 00 .DSEG .ORG 0x80 ; 1 /********************************************* ; 2 This program was produced by the ; 3 CodeWizardAVR V1.23.8c Professional ; 4 Automatic Program Generator ; 5 © Copyright 1998-2003 HP InfoTech s.r.l. ; 6 http://www.hpinfotech.ro ; 7 e-mail:office@hpinfotech.ro ; 8 ; 9 Project : test2 ; 10 Version : ; 11 Date : 19.03.2005 ; 12 Author : ; 13 Company : ; 14 Comments: ; 15 ; 16 ; 17 Chip type : ATtiny26L ; 18 Clock frequency : 1,000000 MHz ; 19 Memory model : Tiny ; 20 External SRAM size : 0 ; 21 Data Stack size : 32 ; 22 *********************************************/ ; 23 ; 24 #include ; 25 ; 26 // Declare your global variables here ; 27 ; 28 void main(void) ; 29 { .CSEG ; 30 // Declare your local variables here ; 31 ; 32 // Input/Output Ports initialization ; 33 // Port A initialization ; 34 // Func0=Out Func1=Out Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In ; 35 // State0=0 State1=0 State2=T State3=T State4=T State5=T State6=T State7=T ; 36 PORTA=0x00; ; 37 DDRA=0x03; ; 38 ; 39 // Port B initialization ; 40 // Func0=In Func1=In Func2=In Func3=Out Func4=In Func5=In Func6=In Func7=In ; 41 // State0=T State1=T State2=T State3=0 State4=T State5=T State6=T State7=T ; 42 PORTB=0x00; ; 43 DDRB=0x08; ; 44 ; 45 // Timer/Counter 0 initialization ; 46 // Clock source: System Clock ; 47 // Clock value: Timer 0 Stopped ; 48 TCCR0=0x00; ; 49 TCNT0=0x00; ; 50 ; 51 // Timer/Counter 1 initialization ; 52 // Clock source: System Clock ; 53 // Clock value: Timer 1 Stopped ; 54 // Mode: Normal top=FFh ; 55 // OC1A output: Disconnected ; 56 // OC1B output: Disconnected ; 57 PLLCSR=0x00; ; 58 TCCR1A=0x00; ; 59 TCCR1B=0x00; ; 60 TCNT1=0x00; ; 61 OCR1A=0x00; ; 62 OCR1B=0x00; ; 63 OCR1C=0x00; ; 64 ; 65 // External Interrupt(s) initialization ; 66 // INT0: Off ; 67 // Interrupt on any change on pins PA3, PA6, PA7 and PB4-7: Off ; 68 // Interrupt on any change on pins PB0-3: Off ; 69 GIMSK=0x00; ; 70 MCUCR=0x00; ; 71 ; 72 // Timer(s)/Counter(s) Interrupt(s) initialization ; 73 TIMSK=0x00; ; 74 ; 75 // Universal Serial Interface initialization ; 76 // Mode: Disabled ; 77 // Clock source: Register & Counter=no clk. ; 78 // USI Counter Overflow Interrupt: Off ; 79 USICR=0x00; ; 80 ; 81 // Analog Comparator initialization ; 82 // Analog Comparator: Off ; 83 ACSR=0x80; ; 84 ; 85 while (1) ; 86 { ; 87 // Place your code here ; 88 ; 89 }; ; 90 } Assembly complete with 1 error