?? 單管尋跡.s
字號:
.module _單管尋跡.c
.area text(rom, con, rel)
.dbfile D:\afish\工作內(nèi)容\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.6控制信號線
; 功能:
; 單個紅光電對管尋跡
; LED4~5是前進指示燈;LED1~3是左轉(zhuǎn)彎指示燈;LED6~8是右轉(zhuǎn)彎指示燈
; 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
; if (PINC&=0x40)
in R24,0x13
andi R24,64
out 0x13,R24
tst R24
breq L16
.dbline 40
; {
.dbline 41
; PORTD=0xAF; //直行
ldi R24,175
out 0x12,R24
.dbline 42
; PORTA=0xE7; //點亮LED4,LED5
ldi R24,231
out 0x1b,R24
.dbline 43
; delay(1); //延時1微秒
ldi R16,1
ldi R17,0
xcall _delay
.dbline 44
; }
xjmp L17
L16:
.dbline 46
; else
; {
.dbline 47
; PORTD=0x60; //左轉(zhuǎn)
ldi R24,96
out 0x12,R24
.dbline 48
; PORTA=0x1F; //點亮左邊LED
ldi R24,31
out 0x1b,R24
.dbline 49
; delay(1); //延時1微秒
ldi R16,1
ldi R17,0
xcall _delay
.dbline 50
; }
L17:
.dbline 51
; if (PINC&=0x40)
in R24,0x13
andi R24,64
out 0x13,R24
tst R24
breq L18
.dbline 52
; {
.dbline 53
; PORTD=0xAF; //直行
ldi R24,175
out 0x12,R24
.dbline 54
; PORTA=0x00; //點亮LED4,LED5
clr R2
out 0x1b,R2
.dbline 55
; delay(1); //延時1微秒
ldi R16,1
ldi R17,0
xcall _delay
.dbline 56
; }
xjmp L12
L18:
.dbline 58
.dbline 59
ldi R24,144
out 0x12,R24
.dbline 60
ldi R24,248
out 0x1b,R24
.dbline 61
ldi R16,2
ldi R17,0
xcall _delay
.dbline 62
.dbline 63
.dbline 37
.dbline 37
xjmp L12
X0:
.dbline -2
L11:
.dbline 0 ; func end
ret
.dbend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -