| CODE |
;CodeVisionAVR C Compiler V1.0.1.7b Standard ;(C) Copyright 1998-2001 Pavel Haiduc, HP InfoTech S.R.L. ;http://infotech.ir.ro ;e-mail:dhptechn@ir.ro , hpinfotech@mail.com ;Chip type : AT90S2313 ;Clock frequency : 4,000000 MHz ;Memory model : Tiny ;Optimize for : Speed ;Internal SRAM size : 128 ;External SRAM size : 0 ;Data Stack size : 32 ;Promote char to int : No ;char is unsigned : Yes ;Global #define : Yes ;Automatic register allocation : On ;Use AVR Studio Terminal I/O : No .DEVICE AT90S2313 .LISTMAC .EQU UDRE=0x5 .EQU RXC=0x7 .EQU UBRR=0x9 .EQU UCR=0xA .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 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 R0X1A=R26 .DEF R0X1B=R27 .DEF R0X1C=R28 .DEF R0X1D=R29 .DEF R0X1E=R30 .DEF R0X1F=R31 .EQU __se_bit=0x20 .EQU __sm_mask=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 __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 .CSEG .ORG 0x0B .INCLUDE "night.inc" __RESET: CLI CLR R30 OUT EECR,R30 ;DISABLE WATCHDOG LDI R31,0x18 OUT WDTCR,R31 LDI R31,0x10 OUT WDTCR,R31 OUT MCUCR,R30 ;CLEAR R2-R15 LDI R24,14 LDI R26,2 __CLEAR_REG: ST X+,R30 DEC R24 BRNE __CLEAR_REG ;CLEAR SRAM LDI R24,LOW(0x80) LDI R26,0x60 __CLEAR_SRAM: ST X+,R30 DEC R24 BRNE __CLEAR_SRAM ;GLOBAL VARIABLES INITIALIZATION LDI R30,LOW(__GLOBAL_INI_TBL*2) LDI R31,HIGH(__GLOBAL_INI_TBL*2) __GLOBAL_INI_NEXT: LPM MOV R1,R0 ADIW R30,1 LPM ADIW R30,1 MOV R22,R30 MOV R23,R31 MOV R31,R0 MOV R30,R1 SBIW R30,0 BREQ __GLOBAL_INI_END LPM MOV R26,R0 ADIW R30,1 LPM MOV R27,R0 ADIW R30,1 LPM MOV R24,R0 ADIW R30,1 LPM MOV R25,R0 ADIW R30,1 __GLOBAL_INI_LOOP: LPM ST X+,R0 ADIW R30,1 SBIW R24,1 BRNE __GLOBAL_INI_LOOP MOV R30,R22 MOV R31,R23 RJMP __GLOBAL_INI_NEXT __GLOBAL_INI_END: ;STACK POINTER INITIALIZATION LDI R30,LOW(0xDF) OUT SPL,R30 ;DATA STACK POINTER INITIALIZATION LDI R28,LOW(0x7F) RJMP _main .ESEG .ORG 1 .DSEG .ORG 0x80 ; 1 /********************************************* ; 2 This program was produced by the ; 3 CodeWizardAVR V1.0.1.7b Standard ; 4 Automatic Program Generator ; 5 © Copyright 1998-2001 ; 6 Pavel Haiduc, HP InfoTech S.R.L. ; 7 http://infotech.ir.ro ; 8 e-mail:dhptechn@ir.ro , hpinfotech@mail.com ; 9 ; 10 Project : ; 11 Version : ; 12 Date : 16-10-2001 ; 13 Author : License #1 Universiteit Twente ; 14 Company : 7522 NH Enschede, Nederland ; 15 Comments: ; 16 ; 17 ; 18 Chip type : AT90S2313 ; 19 Clock frequency : 4,000000 MHz ; 20 Memory model : Tiny ; 21 Internal SRAM size : 128 ; 22 External SRAM size : 0 ; 23 Data Stack size : 32 ; 24 *********************************************/ ; 25 ; 26 #include <90s2313.h> ; 27 // CodeVisionAVR C Compiler ; 28 // (C) 1998-2000 Pavel Haiduc, HP InfoTech S.R.L. ; 29 ; 30 // I/O registers definitions for the AT90S2313 ; 31 ; 32 #ifndef _90S2313_INCLUDED_ ; 33 #define _90S2313_INCLUDED_ ; 34 ; 35 #pragma used+ ; 36 sfrb ACSR=8; ; 37 sfrb UBRR=9; ; 38 sfrb UCR=0xa; ; 39 sfrb USR=0xb; ; 40 sfrb UDR=0xc; ; 41 sfrb PIND=0x10; ; 42 sfrb DDRD=0x11; ; 43 sfrb PORTD=0x12; ; 44 sfrb PINB=0x16; ; 45 sfrb DDRB=0x17; ; 46 sfrb PORTB=0x18; ; 47 sfrb EECR=0x1c; ; 48 sfrb EEDR=0x1d; ; 49 sfrb EEAR=0x1e; ; 50 sfrb WDTCR=0x21; ; 51 sfrb ICR1L=0x24; ; 52 sfrb ICR1H=0x25; ; 53 sfrw ICR1=0x24; // 16 bit access ; 54 sfrb OCR1L=0x2a; ; 55 sfrb OCR1H=0x2b; ; 56 sfrw OCR1=0x2a; // 16 bit access ; 57 sfrb TCNT1L=0x2c; ; 58 sfrb TCNT1H=0x2d; ; 59 sfrw TCNT1=0x2c; // 16 bit access ; 60 sfrb TCCR1B=0x2e; ; 61 sfrb TCCR1A=0x2f; ; 62 sfrb TCNT0=0x32; ; 63 sfrb TCCR0=0x33; ; 64 sfrb MCUSR=0x34; ; 65 sfrb MCUCR=0x35; ; 66 sfrb TIFR=0x38; ; 67 sfrb TIMSK=0x39; ; 68 sfrb GIFR=0x3a; ; 69 sfrb GIMSK=0x3b; ; 70 sfrb SPL=0x3d; ; 71 sfrb SREG=0x3f; ; 72 #pragma used- ; 73 ; 74 #define OCR1AL OCR1L ; 75 #define OCR1AH OCR1H ; 76 ; 77 // Interrupt vectors definitions ; 78 ; 79 #define EXT_INT0 2 ; 80 #define EXT_INT1 3 ; 81 #define TIM1_CAPT 4 ; 82 #define TIM1_COMP 5 ; 83 #define TIM1_OVF 6 ; 84 #define TIM0_OVF 7 ; 85 #define UART_RXC 8 ; 86 #define UART_DRE 9 ; 87 #define UART_TXC 10 ; 88 #define ANA_COMP 11 ; 89 ; 90 #endif ; 91 ; 92 unsigned char n = 0x00; ; 93 char p,q,r,s,t; ; 94 bit up = 1; ; 95 bit op = 1; ; 96 bit ep = 1; ; 97 bit ip = 1; ; 98 bit ap = 1; ; 99 char een,eentemp,twee,tweetemp,drie,drietemp,vier,viertemp,vijf,vijftemp,zes,zestemp,zeven,zeventemp,acht,achttemp; _vier: .BYTE 0x1 _viertemp: .BYTE 0x1 _vijf: .BYTE 0x1 _vijftemp: .BYTE 0x1 _zes: .BYTE 0x1 _zestemp: .BYTE 0x1 _zeven: .BYTE 0x1 _zeventemp: .BYTE 0x1 _acht: .BYTE 0x1 _achttemp: .BYTE 0x1 ; 100 ; 101 // Timer 0 overflow interrupt service routine ; 102 interrupt [TIM0_OVF] void timer0_ovf_isr(void) ; 103 { .CSEG _timer0_ovf_isr: RCALL __SAVEISR ; 104 #asm ("cli") cli ; 105 // Reinitialize Timer's 0 value ; 106 TCNT0=0x38; LDI R30,LOW(56) OUT 0x32,R30 ; 107 ; 108 // Place your code here ; 109 n++; INC R4 ; 110 if (n>100){ LDI R30,LOW(100) CP R30,R4 BRSH _0x2 ; 111 n = 0; CLR R4 ; 112 PORTB=0x00; CLR R30 OUT 0x18,R30 ; 113 eentemp = een; MOV R11,R10 ; 114 tweetemp = twee; MOV R13,R12 ; 115 drietemp = drie; MOV R15,R14 ; 116 viertemp = vier; LDS R30,_vier STS _viertemp,R30 ; 117 vijftemp = vijf; LDS R30,_vijf STS _vijftemp,R30 ; 118 zestemp = zes; LDS R30,_zes STS _zestemp,R30 ; 119 zeventemp = zeven; LDS R30,_zeven STS _zeventemp,R30 ; 120 achttemp = acht; LDS R30,_acht STS _achttemp,R30 ; 121 } ; 122 --eentemp; _0x2: DEC R11 ; 123 --tweetemp; DEC R13 ; 124 drietemp--; DEC R15 ; 125 viertemp--; LDS R30,_viertemp SUBI R30,1 STS _viertemp,R30 ; 126 vijftemp--; LDS R30,_vijftemp SUBI R30,1 STS _vijftemp,R30 ; 127 zestemp--; LDS R30,_zestemp SUBI R30,1 STS _zestemp,R30 ; 128 zeventemp--; LDS R30,_zeventemp SUBI R30,1 STS _zeventemp,R30 ; 129 achttemp--; LDS R30,_achttemp SUBI R30,1 STS _achttemp,R30 ; 130 if (eentemp == 1) PORTB.0 = 1; LDI R30,LOW(1) CP R30,R11 BRNE _0x3 SBI 0x18,0 ; 131 if (tweetemp == 1) PORTB.1 = 1; _0x3: LDI R30,LOW(1) CP R30,R13 BRNE _0x4 SBI 0x18,1 ; 132 if (drietemp == 1) PORTB.2 = 1; _0x4: LDI R30,LOW(1) CP R30,R15 BRNE _0x5 SBI 0x18,2 ; 133 if (viertemp == 1) PORTB.3 = 1; _0x5: LDS R26,_viertemp CPI R26,LOW(0x1) BRNE _0x6 SBI 0x18,3 ; 134 if (vijftemp == 1) PORTB.4 = 1; _0x6: LDS R26,_vijftemp CPI R26,LOW(0x1) BRNE _0x7 SBI 0x18,4 ; 135 if (zestemp == 1) PORTB.5 = 1; _0x7: LDS R26,_zestemp CPI R26,LOW(0x1) BRNE _0x8 SBI 0x18,5 ; 136 if (zeventemp == 1) PORTB.6 = 1; _0x8: LDS R26,_zeventemp CPI R26,LOW(0x1) BRNE _0x9 SBI 0x18,6 ; 137 if (achttemp == 1) PORTB.7 = 1; _0x9: LDS R26,_achttemp CPI R26,LOW(0x1) BRNE _0xA SBI 0x18,7 ; 138 ; 139 #asm("sei") _0xA: sei ; 140 } RCALL __LOADISR RETI ; 141 ; 142 // Timer 1 overflow interrupt service routine ; 143 interrupt [TIM1_OVF] void timer1_ovf_isr(void) ; 144 { _timer1_ovf_isr: RCALL __SAVEISR ; 145 #asm("cli") cli ; 146 // Reinitialize Timer's 1 value ; 147 TCNT1H=0xFF; LDI R30,LOW(255) OUT 0x2D,R30 ; 148 TCNT1L=0x3D; LDI R30,LOW(61) OUT 0x2C,R30 ; 149 if (up) { SBRS R2,0 RJMP _0xC ; 150 p++; INC R5 ; 151 if (p>20) LDI R30,LOW(20) CP R30,R5 BRSH _0xD ; 152 { ; 153 up = 0; CLT BLD R2,0 ; 154 p = 20; MOV R5,R30 ; 155 } ; 156 } _0xD: ; 157 if (!up){ _0xC: SBRC R2,0 RJMP _0xE ; 158 p--; DEC R5 ; 159 if (p<1) LDI R30,LOW(1) CP R5,R30 BRSH _0xF ; 160 { ; 161 up = 1; SET BLD R2,0 ; 162 p = 1; MOV R5,R30 ; 163 } ; 164 } _0xF: ; 165 if (op) { _0xE: SBRS R2,1 RJMP _0x10 ; 166 q++; INC R6 ; 167 if (q>25) LDI R30,LOW(25) CP R30,R6 BRSH _0x11 ; 168 { ; 169 op = 0; CLT BLD R2,1 ; 170 q = 25; MOV R6,R30 ; 171 } ; 172 } _0x11: ; 173 if (!op){ _0x10: SBRC R2,1 RJMP _0x12 ; 174 q--; DEC R6 ; 175 if (q<1) LDI R30,LOW(1) CP R6,R30 BRSH _0x13 ; 176 { ; 177 op = 1; SET BLD R2,1 ; 178 q = 1; MOV R6,R30 ; 179 } ; 180 } _0x13: ; 181 if (ep) { _0x12: SBRS R2,2 RJMP _0x14 ; 182 r++; INC R7 ; 183 if (r>16) LDI R30,LOW(16) CP R30,R7 BRSH _0x15 ; 184 { ; 185 ep = 0; CLT BLD R2,2 ; 186 r = 16; MOV R7,R30 ; 187 } ; 188 } _0x15: ; 189 if (!ep){ _0x14: SBRC R2,2 RJMP _0x16 ; 190 r--; DEC R7 ; 191 if (r<1) LDI R30,LOW(1) CP R7,R30 BRSH _0x17 ; 192 { ; 193 ep = 1; SET BLD R2,2 ; 194 r = 1; MOV R7,R30 ; 195 } ; 196 } _0x17: ; 197 if (ip) { _0x16: SBRS R2,3 RJMP _0x18 ; 198 s++; INC R8 ; 199 if (s>33) LDI R30,LOW(33) CP R30,R8 BRSH _0x19 ; 200 { ; 201 ip = 0; CLT BLD R2,3 ; 202 s = 33; MOV R8,R30 ; 203 } ; 204 } _0x19: ; 205 if (!ip){ _0x18: SBRC R2,3 RJMP _0x1A ; 206 s--; DEC R8 ; 207 if (s<1) LDI R30,LOW(1) CP R8,R30 BRSH _0x1B ; 208 { ; 209 ip = 1; SET BLD R2,3 ; 210 s = 1; MOV R8,R30 ; 211 } ; 212 } _0x1B: ; 213 if (ap) { _0x1A: SBRS R2,4 RJMP _0x1C ; 214 t++; INC R9 ; 215 if (t>20) LDI R30,LOW(20) CP R30,R9 BRSH _0x1D ; 216 { ; 217 ap = 0; CLT BLD R2,4 ; 218 t = 20; MOV R9,R30 ; 219 } ; 220 } _0x1D: ; 221 if (!ap){ _0x1C: SBRC R2,4 RJMP _0x1E ; 222 t--; DEC R9 ; 223 if (t<1) LDI R30,LOW(1) CP R9,R30 BRSH _0x1F ; 224 { ; 225 ap = 1; SET BLD R2,4 ; 226 t = 1; MOV R9,R30 ; 227 } ; 228 } _0x1F: ; 229 een = 5*p; _0x1E: MOV R30,R5 LDI R26,LOW(5) RCALL __MULB12U MOV R10,R30 ; 230 twee = 4*q; MOV R30,R6 LSL R30 LSL R30 MOV R12,R30 ; 231 drie = 6*r; MOV R30,R7 LDI R26,LOW(6) RCALL __MULB12U MOV R14,R30 ; 232 vier = 3*s; MOV R30,R8 LDI R26,LOW(3) RCALL __MULB12U STS _vier,R30 ; 233 vijf = 5*t; MOV R30,R9 LDI R26,LOW(5) RCALL __MULB12U STS _vijf,R30 ; 234 zes = 5*p; MOV R30,R5 LDI R26,LOW(5) RCALL __MULB12U STS _zes,R30 ; 235 zeven = 4*q; MOV R30,R6 LSL R30 LSL R30 STS _zeven,R30 ; 236 acht = 6*r; MOV R30,R7 LDI R26,LOW(6) RCALL __MULB12U STS _acht,R30 ; 237 ; 238 #asm("sei") sei ; 239 } RCALL __LOADISR RETI ; 240 ; 241 // Declare your global variables here ; 242 ; 243 void main(void) ; 244 { _main: ; 245 // Declare your local variables here ; 246 ; 247 // Input/Output Ports initialization ; 248 // Port B ; 249 PORTB=0xFF; LDI R30,LOW(255) OUT 0x18,R30 ; 250 DDRB=0xFF; OUT 0x17,R30 ; 251 ; 252 // Port D ; 253 PORTD=0x7F; LDI R30,LOW(127) OUT 0x12,R30 ; 254 DDRD=0x7F; OUT 0x11,R30 ; 255 ; 256 // Timer/Counter 0 initialization ; 257 // Clock source: System Clock ; 258 // Clock value: 4000,000 kHz ; 259 // Mode: Output Compare ; 260 // OC0 output: Disconnected ; 261 TCCR0=0x01; LDI R30,LOW(1) OUT 0x33,R30 ; 262 TCNT0=0x38; LDI R30,LOW(56) OUT 0x32,R30 ; 263 ; 264 // Timer/Counter 1 initialization ; 265 // Clock source: System Clock ; 266 // Clock value: 3,906 kHz ; 267 // Mode: Output Compare ; 268 // OC1 output: Discon. ; 269 // Noise Canceler: Off ; 270 // Input Capture on Falling Edge ; 271 TCCR1A=0x00; CLR R30 OUT 0x2F,R30 ; 272 TCCR1B=0x05; LDI R30,LOW(5) OUT 0x2E,R30 ; 273 TCNT1H=0xFE; LDI R30,LOW(254) OUT 0x2D,R30 ; 274 TCNT1L=0x7A; LDI R30,LOW(122) OUT 0x2C,R30 ; 275 OCR1H=0x00; CLR R30 OUT 0x2B,R30 ; 276 OCR1L=0x00; OUT 0x2A,R30 ; 277 ; 278 // External Interrupt(s) initialization ; 279 // INT0: Off ; 280 // INT1: Off ; 281 GIMSK=0x00; OUT 0x3B,R30 ; 282 MCUCR=0x00; OUT 0x35,R30 ; 283 ; 284 // Timer(s)/Counter(s) Interrupt(s) initialization ; 285 TIMSK=0x82; LDI R30,LOW(130) OUT 0x39,R30 ; 286 ; 287 // Analog Comparator initialization ; 288 // Analog Comparator: Off ; 289 // Analog Comparator Input Capture by Timer/Counter 1: Off ; 290 ACSR=0x80; LDI R30,LOW(128) OUT 0x8,R30 ; 291 ; 292 // Global enable interrupts ; 293 #asm("sei") sei ; 294 p=1; LDI R30,LOW(1) MOV R5,R30 ; 295 q=4; LDI R30,LOW(4) MOV R6,R30 ; 296 r=8; LDI R30,LOW(8) MOV R7,R30 ; 297 s=12; LDI R30,LOW(12) MOV R8,R30 ; 298 t=16; LDI R30,LOW(16) MOV R9,R30 ; 299 while (1) _0x21: ; 300 { ; 301 // Place your code here ; 302 ; 303 }; RJMP _0x21 ; 304 } RET __SAVEISR: ST -Y,R0 ST -Y,R1 ST -Y,R22 ST -Y,R23 ST -Y,R24 ST -Y,R25 ST -Y,R26 ST -Y,R27 ST -Y,R30 ST -Y,R31 IN R0,SREG ST -Y,R0 RET __LOADISR: LD R0,Y+ OUT SREG,R0 LD R31,Y+ LD R30,Y+ LD R27,Y+ LD R26,Y+ LD R25,Y+ LD R24,Y+ LD R23,Y+ LD R22,Y+ LD R1,Y+ LD R0,Y+ RET __MULB12U: MOV R0,R26 SUB R26,R26 LDI R27,9 RJMP __MULB12U1 __MULB12U3: BRCC __MULB12U2 ADD R26,R0 __MULB12U2: LSR R26 __MULB12U1: ROR R30 DEC R27 BRNE __MULB12U3 RET .ORG 0 ;INTERRUPT VECTORS RJMP __RESET RJMP 0 RJMP 0 RJMP 0 RJMP 0 RJMP _timer1_ovf_isr RJMP _timer0_ovf_isr RJMP 0 RJMP 0 RJMP 0 RJMP 0 |