Zilog Z8 Encore! Macro Assembler Version 2.52 (10101401) 24-Mar-11 14:41:52 page: 1 PC Object I Line Source A 1 ; Zilog Z8 Encore! ANSI C Compiler Release 3.62 A 2 ; -nolocalcse -optsize -nofastcall -const=RAM - A 3 ; -nooptlink -noregvar -reduceopt -debug -norev A 4 ; -alias A 5 DEFINE timer_TEXT,SPACE=ROM A 6 FILE ".\TIMER.C" A 7 .debug "C" A 8 SEGMENT ROM_DATA A 9 A 10 A 11 ;**************************** _isr_timer0 ***** A 12 ;Name Addr/Register S A 13 ;_lt1 IMPORT A 14 ;_t5 IMPORT A 15 ;_t4 IMPORT A 16 ;_t3 IMPORT A 17 ;_t2 IMPORT A 18 ;_t1 IMPORT A 19 ;_subtmr IMPORT A 20 ;_ircode IMPORT A 21 A 22 A 23 ; Aggregate Stack Size: 0 (words) A 24 A 25 A 26 .FRAME _n_isr_timer0,?_n_isr_timer0,RDATA A 27 SEGMENT timer_TEXT 000000 A 28 _isr_timer0: A 29 .define "_isr_timer0" A 30 .value _isr_timer0 A 31 .class 2 A 32 .type 65 A 33 .type 0 A 34 .endef A 35 .begfunc "isr_timer0",25,"_isr_timer0" 000000 C8FFD0 A 36 PUSHX 4093 000003 E8 000FFD A 37 LDX 4093,__intrp 000007 09100000 A 38 ADDX __intrp,#16 00000B 70EF A 39 PUSH R15 00000D 84FFFF A 40 LDX R15,4095 A 41 ; 1 /************************************** A 42 ; 2 * Copyright (C) 1999-2004 by ZiLOG, A 43 ; 3 * All Rights Reserved A 44 ; 4 ************************************** A 45 ; 5 A 46 ; 6 #include A 47 ; 7 #include "main.h" A 48 ; 8 #include "timer.h" A 49 ; 9 A 50 ; 10 extern char subtmr; A 51 ; 11 extern char t1; A 52 ; 12 extern char t2; Zilog Z8 Encore! Macro Assembler Version 2.52 (10101401) 24-Mar-11 14:41:52 page: 2 PC Object I Line Source timer.src A 53 ; 13 extern char t3; A 54 ; 14 extern char t4; A 55 ; 15 extern char t5; A 56 ; 16 extern int lt1; A 57 ; 17 extern unsigned char ircode; A 58 ; 18 extern unsigned char oldir; A 59 ; 19 A 60 ; 20 /////////////////////////////////////// A 61 ; 21 //10 mS Interrupt routine A 62 ; 22 A 63 ; 23 #pragma interrupt A 64 ; 24 void isr_timer0(void) A 65 ; 25 { A 66 ; 26 ircode=PCIN; // read ir A 67 .line 26 000010 E8FDA000 A 68 LDX _ircode,4058 A 69 ; 27 ircode &= 0xf0; // erase un A 70 .line 27 000014 56 00 F0 A 71 AND _ircode,#240 A 72 ; 28 subtmr -=1; A 73 .line 28 000017 30 00 A 74 DEC _subtmr A 75 ; 29 if(subtmr==0) A 76 .line 29 000019 A6 00 00 A 77 CP _subtmr,#0 00001C EB 2C A 78 JR NE,_1_L_11 A 79 ; 30 { A 80 ; 31 subtmr=10; A 81 .line 31 00001E E6 00 0A A 82 LD _subtmr,#10 A 83 ; 32 if(t1>0) t1 -=1; A 84 .line 32 000021 A6 00 00 A 85 CP _t1,#0 000024 2B 02 A 86 JR LE,_1_L_2 000026 30 00 A 87 DEC _t1 000028 A 88 _1_L_2: A 89 ; 33 if(t2>0) t2 -=1; A 90 .line 33 000028 A6 00 00 A 91 CP _t2,#0 00002B 2B 02 A 92 JR LE,_1_L_4 00002D 30 00 A 93 DEC _t2 00002F A 94 _1_L_4: A 95 ; 34 if(t3>0) t3 -=1; A 96 .line 34 00002F A6 00 00 A 97 CP _t3,#0 000032 2B 02 A 98 JR LE,_1_L_6 000034 30 00 A 99 DEC _t3 000036 A 100 _1_L_6: A 101 ; 35 if(t4>0) t4 -=1; A 102 .line 35 000036 A6 00 00 A 103 CP _t4,#0 000039 2B 02 A 104 JR LE,_1_L_8 Zilog Z8 Encore! Macro Assembler Version 2.52 (10101401) 24-Mar-11 14:41:52 page: 3 PC Object I Line Source timer.src 00003B 30 00 A 105 DEC _t4 00003D A 106 _1_L_8: A 107 ; 36 if(t5>0) t5 -=1; A 108 .line 36 00003D A6 00 00 A 109 CP _t5,#0 000040 2B 02 A 110 JR LE,_1_L_9 000042 30 00 A 111 DEC _t5 000044 A 112 _1_L_9: A 113 ; 37 lt1 +=1; // long seq A 114 .line 37 000044 06 01 01 A 115 ADD _lt1+1,#1 000047 16 00 00 A 116 ADC _lt1,#0 A 117 ; 38 } A 118 ; 39 } 00004A A 119 _1_L_11: A 120 .line 39 00004A 50EF A 121 POP R15 00004C 29100000 A 122 SUBX __intrp,#16 000050 D8FFD0 A 123 POPX 4093 000053 BF A 124 IRET A 125 .endfunc "isr_timer0",39,"_isr_timer0" A 126 SEGMENT ROM_DATA A 127 A 128 A 129 ;**************************** _init_timer0 **** A 130 ;Name Addr/Register S A 131 ;_SET_VECTOR IMPORT -- A 132 A 133 A 134 ; Aggregate Stack Size: 0 (words) A 135 A 136 A 137 .FRAME _n_init_timer0,?_n_init_timer0,RDATA A 138 SEGMENT timer_TEXT 000054 A 139 _init_timer0: A 140 .define "_init_timer0" A 141 .value _init_timer0 A 142 .class 2 A 143 .type 65 A 144 .type 0 A 145 .endef A 146 .begfunc "init_timer0",44,"_init_timer0" 000054 70EF A 147 PUSH R15 000056 84FFFF A 148 LDX R15,4095 A 149 ; 40 A 150 ; 41 /////////////////////////////////////// A 151 ; 42 //Intialize Timer-0 A 152 ; 43 void init_timer0(void) A 153 ; 44 { A 154 ; 45 SET_VECTOR(TIMER0, isr_timer0); A 155 ; 46 T0H = 0x6; // Timer High A 156 .line 46 Zilog Z8 Encore! Macro Assembler Version 2.52 (10101401) 24-Mar-11 14:41:52 page: 4 PC Object I Line Source timer.src 000059 E9060F00 A 157 LDX 3840,#6 A 158 ; 47 T0L = 0xc0; // Timer Low A 159 .line 47 00005D E9C00F01 A 160 LDX 3841,#192 A 161 ; 48 T0RH = 0x06; // Reload Compare H A 162 .line 48 000061 E9060F02 A 163 LDX 3842,#6 A 164 ; 49 T0RL = 0xc0; // Reload Compare L A 165 .line 49 000065 E9C00F03 A 166 LDX 3843,#192 A 167 ; 50 T0CTL = 0xE9; // Continous/Presca A 168 .line 50 000069 E9E90F07 A 169 LDX 3847,#233 A 170 ; 51 IRQ0ENH |= 0x20; // Set Interrup A 171 .line 51 00006D 49200FC1 A 172 ORX 4033,#32 A 173 ; 52 IRQ0ENL &= 0xDF; // Set Interrup A 174 .line 52 000071 59DF0FC2 A 175 ANDX 4034,#223 A 176 ; 53 } A 177 .line 53 000075 50EF A 178 POP R15 000077 AF A 179 RET A 180 .endfunc "init_timer0",53,"_init_timer0" A 181 SEGMENT ROM_DATA A 182 A 183 A 184 ;**************************** _wait *********** A 185 ;Name Addr/Register S A 186 ;_oldir IMPORT A 187 ;_ircode IMPORT A 188 ;_t1 IMPORT A 189 ;wtime R15+3 A 190 A 191 A 192 ; Aggregate Stack Size: 0 (words) A 193 A 194 A 195 .FRAME _n_wait,?_n_wait,RDATA A 196 SEGMENT timer_TEXT 000078 A 197 _wait: A 198 .define "_wait" A 199 .value _wait A 200 .class 2 A 201 .type 66 A 202 .type 0 A 203 .endef A 204 .begfunc "wait",57,"_wait" A 205 .define "wtime" A 206 .class 9 A 207 .value 3 A 208 .type 3 Zilog Z8 Encore! Macro Assembler Version 2.52 (10101401) 24-Mar-11 14:41:52 page: 5 PC Object I Line Source timer.src A 209 .type 0 A 210 .endef 000078 70EF A 211 PUSH R15 00007A 84FFFF A 212 LDX R15,4095 A 213 ; 54 A 214 ; 55 // Wait timer A 215 ; 56 char wait(int wtime) A 216 ; 57 { A 217 ; 58 t1=wtime; // start timer A 218 .line 58 00007D C70F04 A 219 LD R0,4(R15) 000080 E4E0 00 A 220 LD _t1,R0 A 221 ; 59 while(t1>0) 000083 A 222 _3_L_15: A 223 .line 59 000083 A6 00 00 A 224 CP _t1,#0 000086 2B 13 A 225 JR LE,_3_L_17 A 226 ; 60 { A 227 ; 61 if(ircode != oldir) // if i A 228 .line 61 000088 A4 00 00 A 229 CP _ircode,_oldir 00008B 6B F6 A 230 JR Z,_3_L_15 A 231 ; 62 { A 232 ; 63 if(ircode >0) // and ircode i A 233 .line 63 00008D A6 00 00 A 234 CP _ircode,#0 000090 3B F1 A 235 JR ULE,_3_L_15 A 236 ; 64 { A 237 ; 65 t1=0; // abor A 238 .line 65 000092 B0 00 A 239 CLR _t1 A 240 ; 66 oldir=ircode; // copy A 241 .line 66 000094 E4 00 00 A 242 LD _oldir,_ircode A 243 ; 67 return(1); // and A 244 .line 67 000097 0C01 A 245 LD R0,#1 000099 8B 02 A 246 JR _3_L_18 A 247 ; 68 } A 248 ; 69 } A 249 ; 70 } 00009B A 250 _3_L_17: A 251 .line 70 A 252 ; 71 return(0); // no new i A 253 .line 71 00009B B0E0 A 254 CLR R0 A 255 ; 72 } 00009D A 256 _3_L_18: A 257 .line 72 00009D 50EF A 258 POP R15 00009F AF A 259 RET A 260 .endfunc "wait",72,"_wait" Zilog Z8 Encore! Macro Assembler Version 2.52 (10101401) 24-Mar-11 14:41:52 page: 6 PC Object I Line Source timer.src 00000C 0000 A 261 VECTOR TIMER0=_isr_timer0 A 262 XREF _oldir:RDATA A 263 XREF _ircode:RDATA A 264 XREF _lt1:RDATA A 265 XREF _t5:RDATA A 266 XREF _t4:RDATA A 267 XREF _t3:RDATA A 268 XREF _t2:RDATA A 269 XREF _t1:RDATA A 270 XREF _subtmr:RDATA A 271 XREF __intrp:RDATA A 272 XDEF _wait A 273 XDEF _init_timer0 A 274 XDEF _isr_timer0 A 275 END Errors: 0 Warnings: 0 Lines Assembled: 276