?? 三管.s
字號:
.module _三管.c
.area text(rom, con, rel)
.dbfile D:\afish\工作內容\DIY-08-16\M16\DIY-08-16\三管尋跡\三管.c
.dbfunc e delay_1ms _delay_1ms fV
; i -> R16,R17
.even
_delay_1ms::
.dbline -1
.dbline 18
; /***************************************************************************************/
; /* 廣州雙龍電子
; WWW.SL.COM.CN
;
; PC.7,PC.6,PC.5分別檢測左中右三個光電管
; 功能:
; 三個紅光電對管尋跡
; LED4~5是前進指示燈;LED1~3是左轉指示燈;LED6~8右轉指示燈
; Chip type : ATMEGA16
; Clock frequency : 8MHz
; */
; /***************************************************************************************/
;
; #include <iom16v.h>
; #include <macros.h>
; #define xtal 8
; void delay_1ms(void) //1ms延時
; {
.dbline 20
; unsigned int i;
; for(i=1;i<(unsigned int)(xtal*143-2);i++)
ldi R16,1
ldi R17,0
xjmp L5
L2:
.dbline 21
L3:
.dbline 20
subi R16,255 ; offset = 1
sbci R17,255
L5:
.dbline 20
cpi R16,118
ldi R30,4
cpc R17,R30
brlo L2
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.dbfunc e delay _delay fV
; i -> R20,R21
; n -> R22,R23
.even
_delay::
xcall push_gset2
movw R22,R16
.dbline -1
.dbline 24
; ;
; }
; void delay(unsigned int n)
; {
.dbline 26
; unsigned int i;
; for(i=0;i<n;i++)
clr R20
clr R21
xjmp L10
L7:
.dbline 27
xcall _delay_1ms
L8:
.dbline 26
subi R20,255 ; offset = 1
sbci R21,255
L10:
.dbline 26
cp R20,R22
cpc R21,R23
brlo L7
.dbline -2
L6:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 22 i
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 30
; delay_1ms();
; }
; void main(void)
; {
.dbline 31
; DDRA=0xff; //初始化端口
ldi R24,255
out 0x1a,R24
.dbline 32
; PORTA=0xff;
out 0x1b,R24
.dbline 33
; DDRD=0xf0;
ldi R24,240
out 0x11,R24
.dbline 34
; PORTD=0x0f;
ldi R24,15
out 0x12,R24
.dbline 35
; DDRC=0x00;
clr R2
out 0x14,R2
.dbline 36
; PORTC=0xff;
ldi R24,255
out 0x15,R24
.dbline 37
; for(;;)
L12:
.dbline 38
; {
.dbline 39
; switch(PINC&0xe0)
in R20,0x13
clr R21
andi R20,224
andi R21,0
cpi R20,96
ldi R30,0
cpc R21,R30
brne X3
xjmp L22
X3:
ldi R24,96
ldi R25,0
cp R24,R20
cpc R25,R21
brlt L28
L27:
cpi R20,32
ldi R30,0
cpc R21,R30
brne X4
xjmp L20
X4:
ldi R24,32
ldi R25,0
cp R24,R20
cpc R25,R21
brlt L30
L29:
cpi R20,0
cpc R20,R21
breq L19
X0:
xjmp L12
L30:
cpi R20,64
ldi R30,0
cpc R21,R30
brne X5
xjmp L21
X5:
xjmp L12
L28:
cpi R20,160
ldi R30,0
cpc R21,R30
brne X6
xjmp L24
X6:
ldi R24,160
ldi R25,0
cp R24,R20
cpc R25,R21
brlt L32
L31:
cpi R20,128
ldi R30,0
cpc R21,R30
brne X7
xjmp L23
X7:
xjmp L12
L32:
cpi R20,192
ldi R30,0
cpc R21,R30
brne X8
xjmp L25
X8:
cpi R20,192
ldi R30,0
cpc R21,R30
brge X9
xjmp L12
X9:
L33:
cpi R20,224
ldi R30,0
cpc R21,R30
brne X10
xjmp L26
X10:
xjmp L12
X1:
.dbline 40
; {
L19:
.dbline 41
; case 0x00:PORTD=0x5F ;PORTA=0xff; delay(1);break; //出界,后退探測,熄滅全部LED
ldi R24,95
out 0x12,R24
.dbline 41
ldi R24,255
out 0x1b,R24
.dbline 41
ldi R16,1
ldi R17,0
xcall _delay
.dbline 41
xjmp L12
L20:
.dbline 42
; case 0x20:PORTD=0x90 ;PORTA=0xf8; delay(1);break; //轉右,點亮右轉指示燈
ldi R24,144
out 0x12,R24
.dbline 42
ldi R24,248
out 0x1b,R24
.dbline 42
ldi R16,1
ldi R17,0
xcall _delay
.dbline 42
xjmp L12
L21:
.dbline 43
; case 0x40:PORTD=0xaf ;PORTA=0xe7; delay(1);break; // 前進,點亮前進指示燈
ldi R24,175
out 0x12,R24
.dbline 43
ldi R24,231
out 0x1b,R24
.dbline 43
ldi R16,1
ldi R17,0
xcall _delay
.dbline 43
xjmp L12
L22:
.dbline 44
; case 0x60:PORTD=0xaf ;PORTA=0xe7; delay(1);break; //前進,點亮前進指示燈
ldi R24,175
out 0x12,R24
.dbline 44
ldi R24,231
out 0x1b,R24
.dbline 44
ldi R16,1
ldi R17,0
xcall _delay
.dbline 44
xjmp L12
L23:
.dbline 45
; case 0x80:PORTD=0x60 ;PORTA=0x1f; delay(1);break; //轉左,點亮左轉指示燈
ldi R24,96
out 0x12,R24
.dbline 45
ldi R24,31
out 0x1b,R24
.dbline 45
ldi R16,1
ldi R17,0
xcall _delay
.dbline 45
xjmp L12
L24:
.dbline 46
; case 0xa0:PORTD=0xaf ;PORTA=0xe7; delay(1);break; //直行,點亮前進指示燈
ldi R24,175
out 0x12,R24
.dbline 46
ldi R24,231
out 0x1b,R24
.dbline 46
ldi R16,1
ldi R17,0
xcall _delay
.dbline 46
xjmp L12
L25:
.dbline 47
; case 0xc0:PORTD=0xaf ;PORTA=0x0e7; delay(1);break; //前進,點亮前進指示燈
ldi R24,175
out 0x12,R24
.dbline 47
ldi R24,231
out 0x1b,R24
.dbline 47
ldi R16,1
ldi R17,0
xcall _delay
.dbline 47
xjmp L12
L26:
.dbline 48
ldi R24,144
out 0x12,R24
.dbline 48
ldi R24,31
out 0x1b,R24
.dbline 48
ldi R16,1
ldi R17,0
xcall _delay
.dbline 48
.dbline 50
.dbline 37
.dbline 37
xjmp L12
X2:
.dbline -2
L11:
.dbline 0 ; func end
ret
.dbend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -