📄 gb.s
字号:
; 0X0280,0X023A,0X01F3,0X01AC,0X0164,0X011D,0X00D6,0X008E,0x0047,
; 0x0000
; };
; //#pragma end_abs_address
;
;
; #define zouqi 300
; #define xishu 4000
; #define outup 480
; #define outdown 120
; #define ovzq 120
; #define errcount 5
; #define unetmax 700
;
; unsigned char EEPROMread( int location)
; {
.dbline 72
; EEAR = location;
out 0x1f,R17
out 0x1e,R16
.dbline 74
;
; EECR |= 0x01; // Set READ strobe
sbi 0x1c,0
.dbline 76
;
; return (EEDR); // Return byte
in R16,0x1d
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r location 16 I
.dbend
.dbfunc e EEPROMwrite _EEPROMwrite fI
; oldSREG -> R20
; byte -> R18
; location -> R16,R17
.even
_EEPROMwrite::
xcall push_gset1
.dbline -1
.dbline 80
; }
;
; int EEPROMwrite( int location, unsigned char byte)
; {
.dbline 83
; unsigned char oldSREG;
;
; EEAR = location;
out 0x1f,R17
out 0x1e,R16
.dbline 85
;
; EEDR = byte;
out 0x1d,R18
.dbline 87
;
; oldSREG = SREG;
in R20,0x3f
.dbline 88
; SREG &= ~0x80; // disable interrupt
bclr 7
.dbline 90
;
; EECR |= 0x04; // Set MASTER WRITE enable
sbi 0x1c,2
.dbline 91
; EECR |= 0x02; // Set WRITE strobe
sbi 0x1c,1
L3:
.dbline 92
L4:
.dbline 92
; while (EECR & 0x02); // Wait until write is done
sbic 0x1c,1
rjmp L3
.dbline 94
;
; SREG = oldSREG;
out 0x3f,R20
.dbline 95
; return 0; // return Success.
clr R16
clr R17
.dbline -2
L2:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r oldSREG 20 c
.dbsym r byte 18 c
.dbsym r location 16 I
.dbend
.dbfunc e inkg _inkg fV
; t -> R16
.even
_inkg::
.dbline -1
.dbline 103
; // Could be expanded so that
; // the routine checks that the address
; // is within the range of the chip.
; }
;
;
; void inkg(void)
; {
.dbline 105
; char t;
; MCUCR&=0X7F;
in R24,0x35
andi R24,127
out 0x35,R24
.dbline 106
; PORTG &= 0XFD;//read switch no DL
lds R24,101
andi R24,253
sts 101,R24
.dbline 107
; NOP( );
nop
.dbline 108
; NOP( );
nop
.dbline 109
; NOP( );
nop
.dbline 110
; NOP( );
nop
.dbline 111
; NOP( );
nop
.dbline 112
; NOP( );
nop
.dbline 113
; NOP( );
nop
.dbline 114
; t = PINE;
in R16,0x1
.dbline 115
; PORTG |= 0X1F;
lds R24,101
ori R24,31
sts 101,R24
.dbline 116
; qs10=t&0x01;
mov R24,R16
andi R24,1
sts _qs10,R24
.dbline 117
; qs20=(t&0x02)>>1;
mov R24,R16
andi R24,2
lsr R24
sts _qs20,R24
.dbline 118
; qs30=(t&0x04)>>2;
mov R24,R16
andi R24,4
lsr R24
lsr R24
sts _qs30,R24
.dbline 119
; qs40=(t&0x08)>>3;
mov R24,R16
andi R24,8
lsr R24
lsr R24
lsr R24
sts _qs40,R24
.dbline 120
; return ;
.dbline -2
L6:
.dbline 0 ; func end
ret
.dbsym r t 16 c
.dbend
.dbfunc e inDL _inDL fV
; t -> R16
.even
_inDL::
.dbline -1
.dbline 124
; }
;
; void inDL(void )
; {
.dbline 126
; char t;
; MCUCR&=0X7F;
in R24,0x35
andi R24,127
out 0x35,R24
.dbline 127
; PORTG &= 0X0FB; //READ DL NO KG
lds R24,101
andi R24,251
sts 101,R24
.dbline 128
; NOP( );
nop
.dbline 129
; NOP();
nop
.dbline 130
; NOP();
nop
.dbline 131
; NOP();
nop
.dbline 132
; NOP();
nop
.dbline 133
; NOP();
nop
.dbline 134
; NOP();
nop
.dbline 135
; NOP();
nop
.dbline 136
; t = PINE;
in R16,0x1
.dbline 137
; PORTG |= 0X1F;
lds R24,101
ori R24,31
sts 101,R24
.dbline 138
; be10=t&0x01;
mov R24,R16
andi R24,1
sts _be10,R24
.dbline 139
; be20=(t>>1)&0x01;
mov R24,R16
lsr R24
andi R24,1
sts _be20,R24
.dbline 140
; be30=(t>>2)&0x01;
mov R24,R16
lsr R24
lsr R24
andi R24,1
sts _be30,R24
.dbline 141
; be40=(t>>3)&0x01;
mov R24,R16
lsr R24
lsr R24
lsr R24
andi R24,1
sts _be40,R24
.dbline 142
; ov10=(t>>4)&0x01;
mov R24,R16
swap R24
andi R24,#0x0F
andi R24,1
sts _ov10,R24
.dbline 143
; ov20=(t&0x20)>>5;
mov R24,R16
andi R24,32
lsr R24
lsr R24
lsr R24
lsr R24
lsr R24
sts _ov20,R24
.dbline 144
; ov30=(t&0x40)>>6;
mov R24,R16
andi R24,64
lsr R24
lsr R24
lsr R24
lsr R24
lsr R24
lsr R24
sts _ov30,R24
.dbline 145
; ov40=(t&0x80)>>7;
mov R24,R16
andi R24,128
lsr R24
lsr R24
lsr R24
lsr R24
lsr R24
lsr R24
lsr R24
sts _ov40,R24
.dbline 146
; return ;
.dbline -2
L7:
.dbline 0 ; func end
ret
.dbsym r t 16 c
.dbend
.dbfunc e checkyb _checkyb fc
; k -> R16
.even
_checkyb::
.dbline -1
.dbline 150
; }
;
; char checkyb(void )
; {
.dbline 152
; char k;
; k = (PINB & 0X10)>>4;
in R16,0x16
andi R16,16
swap R16
andi R16,#0x0F
.dbline 153
; return (k);
.dbline -2
L8:
.dbline 0 ; func end
ret
.dbsym r k 16 c
.dbend
.dbfunc e out _out fV
; s -> R16
.even
_out::
xcall push_gset1
.dbline -1
.dbline 158
; }
;
;
; void out(char s)
; {
.dbline 159
; if(( s>=1)&& (s <= 4 ))
cpi R16,1
brlo L10
ldi R24,4
cp R24,R16
brlo L10
.dbline 160
; {
.dbline 161
; PORTB |=(1<<5);
sbi 0x18,5
.dbline 162
; switch (s)
mov R20,R16
clr R21
cpi R20,1
ldi R30,0
cpc R21,R30
breq L15
cpi R20,2
ldi R30,0
cpc R21,R30
breq L16
cpi R20,3
ldi R30,0
cpc R21,R30
breq L17
cpi R20,4
ldi R30,0
cpc R21,R30
breq L18
xjmp L12
X0:
.dbline 163
; {
L15:
.dbline 165
; case 1 :
; PORTC |=0X01;
sbi 0x15,0
.dbline 167
; // pfcz[0].he=1;
; break;
xjmp L13
L16:
.dbline 170
;
; case 2 :
; PORTC |=0X02;
sbi 0x15,1
.dbline 172
; // pfcz[1].he=1;
; break;
xjmp L13
L17:
.dbline 175
;
; case 3 :
; PORTC |=0X04;
sbi 0x15,2
.dbline 177
; // pfcz[2].he=1;
; break;
xjmp L13
L18:
.dbline 180
;
; case 4:
; PORTC |=0X08;
sbi 0x15,3
.dbline 182
; // pfcz[3].he=1;
; break;
L12:
L13:
.dbline 184
L10:
.dbline -2
L9:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r s 16 c
.dbend
.dbfunc e clrout _clrout fV
; k -> R20
; j -> R22
; s -> R16
.even
_clrout::
xcall push_gset2
.dbline -1
.dbline 188
; }
; }
; }
;
; void clrout(char s)
; {
.dbline 190
; unsigned char k,j;
; if (s &&(s<=4))
tst R16
brne X2
xjmp L20
X2:
ldi R24,4
cp R24,R16
brsh X3
xjmp L20
X3:
.dbline 191
; {
.dbline 193
; //fod out dowN
; PORTB &= 0X0DF;
in R24,0x18
andi R24,223
out 0x18,R24
.dbline 194
; switch (s)
mov R20,R16
clr R21
cpi R20,1
ldi R30,0
cpc R21,R30
breq L25
cpi R20,2
ldi R30,0
cpc R21,R30
breq L34
cpi R20,3
ldi R30,0
cpc R21,R30
breq L43
cpi R20,4
ldi R30,0
cpc R21,R30
breq L52
xjmp L22
X1:
.dbline 195
; {
L25:
.dbline 197
; case 1 :
; PORTC &=0X0FE;
in R24,0x15
andi R24,254
out 0x15,R24
.dbline 199
; // pfcz[0].he=0;
; for(k=65535;k>0;k--)
ldi R20,255
xjmp L29
L26:
.dbline 200
; {
.dbline 201
ldi R22,24
xjmp L33
L30:
.dbline 201
L31:
.dbline 201
dec R22
L33:
.dbline 201
clr R2
cp R2,R22
brlo L30
.dbline 202
L27:
.dbline 199
dec R20
L29:
.dbline 199
clr R2
cp R2,R20
brlo L26
.dbline 203
; for(j=280;j>0;j--);
; }
; PORTB |=(1<<5); //fod rise
sbi 0x18,5
.dbline 204
; break;
xjmp L23
L34:
.dbline 207
;
; case 2 :
; PORTC &=0X0FD;
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 209
; // pfcz[1].he=0;
; for(k=65535;k>0;k--)
ldi R20,255
xjmp L38
L35:
.dbline 210
; {
.dbline 211
ldi R22,24
xjmp L42
L39:
.dbline 211
L40:
.dbline 211
dec R22
L42:
.dbline 211
clr R2
cp R2,R22
brlo L39
.dbline 212
L36:
.dbline 209
dec R20
L38:
.dbline 209
clr R2
cp R2,R20
brlo L35
.dbline 213
; for(j=280;j>0;j--);
; }
; PORTB |=(1<<5); //fod rise
sbi 0x18,5
.dbline 214
; break;
xjmp L23
L43:
.dbline 217
;
; case 3 :
; PORTC &=0XFB;
in R24,0x15
andi R24,251
out 0x15,R24
.dbline 219
; // pfcz[2].he=0;
; for(k=65535;k>0;k--)
ldi R20,255
xjmp L47
L44:
.dbline 220
; {
.dbline 221
ldi R22,194
xjmp L51
L48:
.dbline 221
L49:
.dbline 221
dec R22
L51:
.dbline 221
clr R2
cp R2,R22
brlo L48
.dbline 222
L45:
.dbline 219
dec R20
L47:
.dbline 219
clr R2
cp R2,R20
brlo L44
.dbline 223
; for(j=450;j>0;j--);
; }
; PORTB |=(1<<5); //fod rise
sbi 0x18,5
.dbline 224
; break;
xjmp L23
L52:
.dbline 227
;
; case 4 :
; PORTC &=0X0F7 ;
in R24,0x15
andi R24,247
out 0x15,R24
.dbline 229
; // pfcz[3].he=0;
; for(k=65535;k>0;k--)
ldi R20,255
xjmp L56
L53:
.dbline 230
; {
.dbline 231
ldi R22,194
xjmp L60
L57:
.dbline 231
L58:
.dbline 231
dec R22
L60:
.dbline 231
clr R2
cp R2,R22
brlo L57
.dbline 232
L54:
.dbline 229
dec R20
L56:
.dbline 229
clr R2
cp R2,R20
brlo L53
.dbline 233
; for(j=450;j>0;j--);
; }
; PORTB |=(1<<5); //fod rise
sbi 0x18,5
.dbline 234
; }
L22:
L23:
.dbline 236
L20:
.dbline -2
L19:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r k 20 c
.dbsym r j 22 c
.dbsym r s 16 c
.dbend
.dbfunc e outled _outled fV
; ledcode -> R16
.even
_outled::
.dbline -1
.dbline 240
;
; }
; }
;
; void outled(char ledcode )
; {
.dbline 241
; MCUCR&=0X7F;
in R24,0x35
andi R24,127
out 0x35,R24
.dbline 242
; PORTA = ledcode;
out 0x1b,R16
.dbline -2
L61:
.dbline 0 ; func end
ret
.dbsym r ledcode 16 c
.dbend
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 247
; }
;
;
; void port_init(void)
; {
.dbline 248
; PORTA = 0xff;
ldi R24,255
out 0x1b,R24
.dbline 249
; DDRA = 0xff;
out 0x1a,R24
.dbline 250
; PORTB = 0x10;
ldi R24,16
out 0x18,R24
.dbline 251
; DDRB = 0xE0;
ldi R24,224
out 0x17,R24
.dbline 252
; PORTC = 0xf0; //74hc05 0x00=74hc07
ldi R24,240
out 0x15,R24
.dbline 253
; DDRC = 0xff;
ldi R24,255
out 0x14,R24
.dbline 254
; PORTD = 0x00;
clr R2
out 0x12,R2
.dbline 255
; DDRD = 0x00;
out 0x11,R2
.dbline 256
; PORTE = 0x00;
out 0x3,R2
.dbline 257
; DDRE = 0x00;
out 0x2,R2
.dbline 258
; PORTF = 0x00;
sts 98,R2
.dbline 259
; DDRF = 0x00;
sts 97,R2
.dbline 260
; PORTG = 0x1F;
ldi R24,31
sts 101,R24
.dbline 261
; DDRG = 0x1f;
sts 100,R24
.dbline -2
L62:
.dbline 0 ; func end
ret
.dbend
.dbfunc e watchdog_init _watchdog_init fV
.even
_watchdog_init::
.dbline -1
.dbline 267
; }
;
; //Watchdog initialize
; // prescale: 1024K
; void watchdog_init(void)
; {
.dbline 268
; WDR(); //this prevents a timout on enabling
wdr
.dbline 269
; WDTCR = 0x0E; //WATCHDOG ENABLED - dont forget to issue WDRs
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -