📄 main.s
字号:
.module MAIN.C
.area data(ram, con, rel)
_StandardDeviceRequest::
.blkw 1
.area idata
.word PL_get_status
.area data(ram, con, rel)
.blkw 1
.area idata
.word PL_clear_feature
.area data(ram, con, rel)
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.blkw 1
.area idata
.word PL_set_feature
.area data(ram, con, rel)
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.blkw 1
.area idata
.word PL_set_address
.area data(ram, con, rel)
.blkw 1
.area idata
.word PL_get_descriptor
.area data(ram, con, rel)
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.blkw 1
.area idata
.word PL_get_configuration
.area data(ram, con, rel)
.blkw 1
.area idata
.word PL_set_configuration
.area data(ram, con, rel)
.blkw 1
.area idata
.word PL_get_interface
.area data(ram, con, rel)
.blkw 1
.area idata
.word PL_set_interface
.area data(ram, con, rel)
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.dbsym e StandardDeviceRequest _StandardDeviceRequest A[32:16]pfV
_VendorDeviceRequest::
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.blkw 1
.area idata
.word PL_reserved
.area data(ram, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.dbsym e VendorDeviceRequest _VendorDeviceRequest A[32:16]pfV
.area text(rom, con, rel)
.dbfile D:\AvrUSB\MAIN.C
.dbfunc e init_port _init_port fV
.even
_init_port::
.dbline -1
.dbline 57
; #include <iom162v.h>
; #include <macros.h>
; #include <stdio.h>
; #include <string.h>
;
; #include "MAIN.H"
; #include "D12CI.H"
; #include "CHAP9.H"
; #include "BulkOnly.H"
; ///////////////////////////////////
; #include "Fat.h"
; ///////////////////////////////////
; void (*StandardDeviceRequest[])(void)=
; {
; get_status,
; clear_feature,
; reserved,
; set_feature,
; reserved,
; set_address,
; get_descriptor,
; reserved,
; get_configuration,
; set_configuration,
; get_interface,
; set_interface,
; reserved,
; reserved,
; reserved,
; reserved
; };
; void(* VendorDeviceRequest[])(void)=
; {
; reserved,
; reserved,
; reserved,
; reserved,
; reserved,
; reserved,
; reserved,
; reserved,
; reserved,
; reserved,
; reserved,
; reserved,
; reserved,
; reserved,
; reserved,
; reserved
; };
;
; extern EPPFLAGS bEPPflags;
; extern IO_REQUEST ioRequest;
; CONTROL_XFER ControlData;
;
; void init_port()
; {
.dbline 58
; PORTC = 0xff;
ldi R24,255
out 0x15,R24
.dbline 59
; DDRC = 0xff;//保持状态
out 0x14,R24
.dbline 60
; DDRD = 0xea; //1110 1010关闭引脚上拉电阻,使正确读取引脚输入
ldi R24,234
out 0x11,R24
.dbline 61
; PORTD = 0xd8; //1101 1000
ldi R24,216
out 0x12,R24
.dbline 62
; DDRA = 0xff; //关闭上拉电阻,使正确读写外部SRAM
ldi R24,255
out 0x1a,R24
.dbline 63
; DDRC = 0x00;
clr R2
out 0x14,R2
.dbline 64
; MCUCR = 0xc0;
ldi R24,192
out 0x35,R24
.dbline 65
; GICR|=BIT(INT0);
in R24,0x3b
ori R24,64
out 0x3b,R24
.dbline -2
.dbline 66
; }
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e init_serial _init_serial fV
.even
_init_serial::
.dbline -1
.dbline 68
; void init_serial(void)
; {
.dbline 69
; UBRR0H=(unsigned char)(51>>8);
clr R2
out 0x20,R2
.dbline 70
; UBRR0L=(unsigned char)51;
ldi R24,51
out 0x9,R24
.dbline 71
; UCSR0B=BIT(TXEN0);
ldi R24,8
out 0xa,R24
.dbline 72
; UCSR0C=(1<<URSEL0)|(1<<USBS0)|(3<<UCSZ00);
ldi R24,142
out 0x20,R24
.dbline -2
.dbline 73
; }
L2:
.dbline 0 ; func end
ret
.dbend
.dbfunc e disconnect_USB _disconnect_USB fV
.even
_disconnect_USB::
.dbline -1
.dbline 75
; void disconnect_USB(void)
; {
.dbline 76
; D12_SetMode(D12_NOLAZYCLOCK|D12_CLOCKRUNNING,D12_SETTOONE|D12_CLOCK_8M);
ldi R18,69
ldi R16,6
.dbline -2
.dbline 77
; }
L3:
.dbline 0 ; func end
xjmp _D12_SetMode
.dbend
.dbfunc e connect_USB _connect_USB fV
.even
_connect_USB::
.dbline -1
.dbline 79
; void connect_USB(void)
; {
.dbline 80
; DISABLE;
cli
.dbline 81
; bEPPflags.value=0;
clr R2
clr R3
sts _bEPPflags+1,R3
sts _bEPPflags,R2
.dbline 82
; ENABLE;
sei
.dbline 83
; D12_SetEndpointStatus(4,0);
clr R18
ldi R16,4
xcall _D12_SetEndpointStatus
.dbline 84
; D12_SetEndpointStatus(5,0);
clr R18
ldi R16,5
xcall _D12_SetEndpointStatus
.dbline 85
; D12_SetDMA(0);
clr R16
xcall _D12_SetDMA
.dbline 86
; D12_SetMode(D12_NOLAZYCLOCK|D12_CLOCKRUNNING|D12_SOFTCONNECT,D12_SETTOONE|D12_CLOCK_8M);
ldi R18,69
ldi R16,22
.dbline -2
.dbline 87
; }
L4:
.dbline 0 ; func end
xjmp _D12_SetMode
.dbend
.dbfunc e reconnect_USB _reconnect_USB fV
; i -> R20,R21
.even
_reconnect_USB::
xcall push_gset1
.dbline -1
.dbline 89
; void reconnect_USB(void)
; {
.dbline 91
; unsigned int i;
; disconnect_USB();
xcall _disconnect_USB
.dbline 92
; ENABLE;
sei
.dbline 93
clr R20
clr R21
xjmp L9
L6:
.dbline 93
L7:
.dbline 93
subi R20,255 ; offset = 1
sbci R21,255
L9:
.dbline 93
; for(i=0;i<50000;i++);
cpi R20,80
ldi R30,195
cpc R21,R30
brlo L6
.dbline 94
; DISABLE;
cli
.dbline 95
; connect_USB();
xcall _connect_USB
.dbline -2
.dbline 96
; }
L5:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbend
.dbfunc e stall_ep0 _stall_ep0 fV
.even
_stall_ep0::
.dbline -1
.dbline 98
; void stall_ep0()
; {
.dbline 99
; D12_SetEndpointStatus(0,1);
ldi R18,1
clr R16
xcall _D12_SetEndpointStatus
.dbline 100
; D12_SetEndpointStatus(1,1);
ldi R18,1
ldi R16,1
.dbline -2
.dbline 101
; }
L10:
.dbline 0 ; func end
xjmp _D12_SetEndpointStatus
.dbend
.dbfunc e init_unconfig _init_unconfig fV
.even
_init_unconfig::
.dbline -1
.dbline 103
; void init_unconfig(void)
; {
.dbline 104
; D12_SetEndpointEnable(0);
clr R16
.dbline -2
.dbline 105
; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -