📄 usb_f245.lis
字号:
.module usb_F245.c
.area text(rom, con, rel)
0000 .dbfile G:\mega8\atmega16\mp3_7210\usb_F245.c
0000 .dbfunc e usb_read _usb_read fc
0000 ; usb_data -> R16
.even
0000 _usb_read::
0000 .dbline -1
0000 .dbline 16
0000 ; #include <iom16v.h>
0000 ;
0000 ; #define led1_off (PORTA|=(1<<4))
0000 ; #define led1_on (PORTA&=~(1<<4))
0000 ;
0000 ; #define usb_txrdy ((PINC&0x04)>>2)
0000 ; #define usb_rxrdy ((PINC&0x08)>>3)
0000 ; #define set_usb_read (PORTC|=(1<<0))
0000 ; #define clr_usb_read (PORTC&=~(1<<0))
0000 ; #define set_usb_write (PORTC|=(1<<1))
0000 ; #define clr_usb_write (PORTC&=~(1<<1))
0000 ;
0000 ;
0000 ; /***********USB_FT245读数据******************/
0000 ; unsigned char usb_read(void)
0000 ; {
0000 01C0 xjmp L3
0002 L2:
0002 .dbline 19
0002 .dbline 20
0002 DC98 cbi 0x1b,4
0004 .dbline 21
0004 L3:
0004 .dbline 18
0004 ; unsigned char usb_data;
0004 ; while (usb_rxrdy)
0004 83B3 in R24,0x13
0006 8870 andi R24,8
0008 8695 lsr R24
000A 8695 lsr R24
000C 8695 lsr R24
000E 8823 tst R24
0010 C1F7 brne L2
0012 .dbline 22
0012 ; {
0012 ; led1_on; /*空则循环*/
0012 ; }
0012 ; led1_off;
0012 DC9A sbi 0x1b,4
0014 .dbline 23
0014 ; clr_usb_read;
0014 A898 cbi 0x15,0
0016 .dbline 24
0016 ; set_usb_read;
0016 A89A sbi 0x15,0
0018 .dbline 25
0018 ; usb_data=PIND;
0018 00B3 in R16,0x10
001A .dbline 26
001A ; return (usb_data);
001A .dbline -2
001A L1:
001A .dbline 0 ; func end
001A 0895 ret
001C .dbsym r usb_data 16 c
001C .dbend
001C .dbfunc e usb_write _usb_write fV
001C ; usb_data -> R20
.even
001C _usb_write::
001C 0E940000 xcall push_gset1
0020 402F mov R20,R16
0022 .dbline -1
0022 .dbline 31
0022 ; }
0022 ; /***********USB_FT245写数据******************/
0022 ; void usb_write(unsigned char usb_data);
0022 ; void usb_write(unsigned char usb_data)
0022 ; {
0022 05C0 xjmp L7
0024 L6:
0024 .dbline 33
0024 .dbline 34
0024 DC98 cbi 0x1b,4
0026 .dbline 35
0026 08EE ldi R16,1000
0028 13E0 ldi R17,3
002A 0E940000 xcall _delay_ms
002E .dbline 36
002E L7:
002E .dbline 32
002E ; while (usb_txrdy)
002E 83B3 in R24,0x13
0030 8470 andi R24,4
0032 8695 lsr R24
0034 8695 lsr R24
0036 8823 tst R24
0038 A9F7 brne L6
003A .dbline 37
003A ; {
003A ; led1_on; /*忙则循环*/
003A ; delay_ms(1000);
003A ; }
003A ; led1_off;
003A DC9A sbi 0x1b,4
003C .dbline 38
003C ; DDRD =0b11111111; /*1=output */
003C 8FEF ldi R24,255
003E 81BB out 0x11,R24
0040 .dbline 39
0040 ; PORTD=usb_data;
0040 42BB out 0x12,R20
0042 .dbline 40
0042 ; set_usb_write;
0042 A99A sbi 0x15,1
0044 .dbline 41
0044 ; clr_usb_write;
0044 A998 cbi 0x15,1
0046 .dbline 42
0046 ; DDRD =0b00000000; /*0=input */
0046 2224 clr R2
0048 21BA out 0x11,R2
004A .dbline 43
004A ; PORTD=0b00000000; /*三态高阻*/
004A 22BA out 0x12,R2
004C .dbline -2
004C .dbline 44
004C ; }
004C L5:
004C 0E940000 xcall pop_gset1
0050 .dbline 0 ; func end
0050 0895 ret
0052 .dbsym r usb_data 20 c
0052 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -