📄 avr_usb.lst
字号:
__text_start:
__start:
0048 E5CF LDI R28,0x5F
0049 E0D2 LDI R29,2
004A BFCD OUT 0x3D,R28
004B BFDE OUT 0x3E,R29
004C 51C0 SUBI R28,0x10
004D 40D0 SBCI R29,0
004E EA0A LDI R16,0xAA
004F 8308 STD Y+0,R16
0050 2400 CLR R0
0051 E8E2 LDI R30,0x82
0052 E0F0 LDI R31,0
0053 E010 LDI R17,0
0054 3CE8 CPI R30,0xC8
0055 07F1 CPC R31,R17
0056 F011 BEQ 0x0059
0057 9201 ST R0,Z+
0058 CFFB RJMP 0x0054
0059 8300 STD Z+0,R16
005A E6EE LDI R30,0x6E
005B E0F0 LDI R31,0
005C E6A0 LDI R26,0x60
005D E0B0 LDI R27,0
005E E010 LDI R17,0
005F 39E0 CPI R30,0x90
0060 07F1 CPC R31,R17
0061 F021 BEQ 0x0066
0062 95C8 LPM
0063 9631 ADIW R30,1
0064 920D ST R0,X+
0065 CFF9 RJMP 0x005F
0066 D001 RCALL _main
_exit:
0067 CFFF RJMP _exit
FILE: G:\Backup\6月1日flag置(认为接近最终)\ilx511_usb\Mainloop.c
(0001) #include "io8515v.h"
(0002) #include <macros.h>
(0003)
(0004) #include "d12head.h"
(0005)
(0006) #pragma interrupt_handler D12_int:2
(0007)
(0008) int shu[3];
(0009) int o=1;
(0010) int u;
(0011)
(0012) /*薛注释,how to use interrupt in iccavr:
(0013) #pragma interrupt_handler timer:4 timer:5
(0014) 中断向量4 和5 都指向中断处理函数timer( )
(0015) */
(0016)
(0017) void main(void)
(0018) {
(0019) unsigned char i=0,j,xue;
_main:
xue --> Y+1
j --> Y+1
i --> R16
m --> R16
0068 2700 CLR R16
(0020) int m=0;
0069 2711 CLR R17
(0021)
(0022) SPL = 0x5f;
006A E58F LDI R24,0x5F
006B BF8D OUT 0x3D,R24
(0023) SPH = 0x02;
006C E082 LDI R24,2
006D BF8E OUT 0x3E,R24
(0024)
(0025) PORTC = 0xff;
006E EF8F LDI R24,0xFF
006F BB85 OUT 0x15,R24
(0026) DDRC = 0xff;//保持状态
0070 BB84 OUT 0x14,R24
(0027)
(0028) //先CPLD复位(PD.4),然后FIFO复位(PB.6),接着使能时钟(PB.7),
(0029) //最后开始积分命令(PB.2)!
(0030) ////DDRB = 0xfc; //11111100
(0031) ////PORTB = 0xbc; //10111100//FIFO复位//不使能时钟
(0032)
(0033) DDRA = 0xff; //关闭上拉电阻,使正确读写外部SRAM
0071 BB8A OUT 0x1A,R24
(0034) GIMSK = 0x00;
0072 2422 CLR R2
0073 BE2B OUT 0x3B,R2
(0035) MCUCR = 0xc4;//asm("OUT 0x35,R20"); 1100 0100 中断0设置为低电平触发
0074 EC84 LDI R24,0xC4
0075 BF85 OUT 0x35,R24
(0036)
(0037) UCR = 0x00; //设置fifoPD1
0076 B82A OUT 0x0A,R2
(0038) DDRD=0xfb;
0077 EF8B LDI R24,0xFB
0078 BB81 OUT 0x11,R24
(0039) PORTD=0xdd;
0079 ED8D LDI R24,0xDD
007A BB82 OUT 0x12,R24
(0040) for(m=0;m<6;m++)
(0041) cwait1;
007B 0000 NOP
007C 5F0F SUBI R16,0xFF
007D 4F1F SBCI R17,0xFF
007E 3006 CPI R16,6
007F E0E0 LDI R30,0
0080 071E CPC R17,R30
0081 F3CC BLT 0x007B
0082 0000 NOP
(0042) PORTD=0xdf;
0083 ED8F LDI R24,0xDF
0084 BB82 OUT 0x12,R24
(0043)
(0044) DDRB=0x00;
0085 2422 CLR R2
0086 BA27 OUT 0x17,R2
(0045) DDRC = 0x00;
0087 BA24 OUT 0x14,R2
(0046) D12_COMMAND = 0xf3;
0088 EF83 LDI R24,0xF3
0089 93807F01 STS 0x7F01,R24
(0047) cwait;
008B 0000 NOP
(0048) D12_DATA = 0x06;//设置模式0
008C E086 LDI R24,6
008D 93807F00 STS 0x7F00,R24
(0049) cwait;
008F 0000 NOP
(0050) ///D12_COMMAND = 0xd0;
(0051) ///cwait;
(0052) ///D12_DATA = 0x80;//设置地址 0 使能
(0053) ///cwait;
(0054) D12_COMMAND = 0xf3;//连接主机
0090 EF83 LDI R24,0xF3
0091 93807F01 STS 0x7F01,R24
(0055) cwait;
0093 0000 NOP
(0056) D12_DATA = 0x16;//16
0094 E186 LDI R24,0x16
0095 93807F00 STS 0x7F00,R24
(0057) cwait;
0097 0000 NOP
(0058) D12_DATA = 0x05;//初始化频率 8MHz
0098 E085 LDI R24,5
0099 93807F00 STS 0x7F00,R24
(0059) csram;
009B 9360FC01 STS 0xFC01,R22
(0060)
(0061) SREG = 0x80;//全局中断使能
009D E880 LDI R24,0x80
009E BF8F OUT 0x3F,R24
(0062) GIMSK = 0x40;
009F E480 LDI R24,0x40
00A0 BF8B OUT 0x3B,R24
(0063) //TCNT0 = 0x85;
(0064) //TIMSK = 0x02; //启动计时器0中断
(0065)
(0066) TCCR1B = 0xc0;//启动ICP上升沿出入捕获
00A1 EC80 LDI R24,0xC0
00A2 BD8E OUT 0x2E,R24
(0067)
(0068) //UCR = 0x00; //disable while setting baud rate
(0069) //UBRR = 25; //set baud rate 19.2K 波特率
(0070) //UCR = 0x1d; //enable 0001 1101
(0071)
(0072)
(0073)
(0074)
(0075)
(0076) while(1)
00A3 CFFF RJMP 0x00A3
(0077) {
(0078) /* if(bconfig==1)
(0079) {
(0080)
(0081) if(o==1)
(0082) {
(0083) o=0;
(0084) D12_COMMAND=0x05;
(0085) D12_COMMAND=0xf0;
(0086) D12_DATA=0;
(0087) D12_DATA=64;
(0088) D12_DATA=0xaa;
(0089) D12_DATA=0xcc;
(0090) D12_DATA=0xee;
(0091) D12_DATA=0xff;
(0092) for( u=0;u<60;u++)
(0093) D12_DATA=u;
(0094) D12_COMMAND=0xfa;
(0095) }
(0096) }
(0097)
(0098) */
(0099)
(0100)
(0101) }
(0102)
(0103)
(0104)
(0105)
(0106) }
00A4 9508 RET
FILE: G:\Backup\6月1日flag置(认为接近最终)\ilx511_usb\18B20.C
(0001) #include <io8515v.h>
(0002) #include <macros.h>
(0003) #include "d12head.h"
(0004)
(0005) #define TEMPTPORT PORTB
(0006) #define TEMPTDDR DDRB
(0007) #define TEMPTPIN PINB
(0008) #define TEMPTNUM 0 //定义B0口为18b20
(0009)
(0010)
(0011) void wendu (void)
(0012) {
(0013) /// converT_command();
(0014) /// readT_command();
(0015) }
_wendu:
00A5 9508 RET
FILE: G:\Backup\6月1日flag置(认为接近最终)\ilx511_usb\32Mflash.c
(0001) #include "io8515v.h"
(0002) #include "d12head.h"
(0003)
(0004) FLASH_STRUCT Mflash;
(0005)
(0006) unsigned char Fifo1_Flag = 0x00;
(0007) unsigned char Fifo2_Flag = 0x00;
(0008) unsigned int Pixel_Count = 0x00;
(0009)
(0010) void flashRead(void)
(0011) {
(0012) unsigned char ch;
(0013) unsigned char i,j;
(0014) ch=PINB;
_flashRead:
j --> Y+1
ch --> R18
i --> R16
00A6 B326 IN R18,0x16
(0015) D12_DATA = 64;
00A7 E480 LDI R24,0x40
00A8 93807F00 STS 0x7F00,R24
(0016)
(0017) if(ch&0x01)//fifo1
00AA FF20 SBRS R18,0
00AB C069 RJMP 0x0115
(0018) {
(0019) if(Fifo1_Flag==0x00)
00AC 90200062 LDS R2,0x62
00AE 2022 TST R2
00AF F551 BNE 0x00DA
(0020) {
(0021) D12_DATA=FIRST_CMD;
00B0 EA8A LDI R24,0xAA
00B1 93807F00 STS 0x7F00,R24
(0022) D12_DATA=SECOND_CMD;
00B3 E585 LDI R24,0x55
00B4 93807F00 STS 0x7F00,R24
(0023) D12_DATA=THIRD_CMD;
00B6 EE8B LDI R24,0xEB
00B7 93807F00 STS 0x7F00,R24
(0024) D12_DATA=FOURTH_CMD;
00B9 E980 LDI R24,0x90
00BA 93807F00 STS 0x7F00,R24
(0025) Fifo1_Flag=0x01;
00BC E081 LDI R24,1
00BD 93800062 STS 0x62,R24
(0026) Fifo2_Flag=0x00;
00BF 2422 CLR R2
00C0 92200063 STS 0x63,R2
(0027) Pixel_Count=0x00;
00C2 2433 CLR R3
00C3 92300065 STS 0x65,R3
00C5 92200064 STS 0x64,R2
(0028) for(i=0;i<60;i++)
00C7 2700 CLR R16
00C8 C00E RJMP 0x00D7
(0029) {
(0030) D12_DATA=fifo1;
00C9 9020BF00 LDS R2,0xBF00
00CB 92207F00 STS 0x7F00,R2
(0031) Pixel_Count++;
00CD 91800064 LDS R24,0x64
00CF 91900065 LDS R25,0x65
00D1 9601 ADIW R24,1
00D2 93900065 STS 0x65,R25
00D4 93800064 STS 0x64,R24
00D6 9503 INC R16
00D7 330C CPI R16,0x3C
00D8 F380 BCS 0x00C9
(0032) }
(0033)
(0034) }
00D9 C0B2 RJMP 0x018C
(0035) else if (Fifo1_Flag==0x01)
00DA 91800062 LDS R24,0x62
00DC 3081 CPI R24,1
00DD F549 BNE 0x0107
(0036) {
(0037) for(i=0;i<64;i++)
00DE 2700 CLR R16
00DF C024 RJMP 0x0104
(0038) {
(0039) D12_DATA=fifo1;
00E0 9020BF00 LDS R2,0xBF00
00E2 92207F00 STS 0x7F00,R2
(0040) Pixel_Count++;
00E4 91800064 LDS R24,0x64
00E6 91900065 LDS R25,0x65
00E8 9601 ADIW R24,1
00E9 93900065 STS 0x65,R25
00EB 93800064 STS 0x64,R24
(0041) if(Pixel_Count==2048)
00ED 3080 CPI R24,0
00EE E0E8 LDI R30,0x8
00EF 079E CPC R25,R30
00F0 F491 BNE 0x0103
(0042) {
(0043) Fifo1_Flag=0x02;
00F1 E082 LDI R24,2
00F2 93800062 STS 0x62,R24
(0044) Pixel_Count=0x00;
00F4 2422 CLR R2
00F5 2433 CLR R3
00F6 92300065 STS 0x65,R3
00F8 92200064 STS 0x64,R2
(0045) for(i=0;i<60;i++)
00FA 2700 CLR R16
00FB C004 RJMP 0x0100
(0046) {
(0047) D12_DATA=0x00;
00FC 2422 CLR R2
00FD 92207F00 STS 0x7F00,R2
00FF 9503 INC R16
0100 330C CPI R16,0x3C
0101 F3D0 BCS 0x00FC
(0048) }
(0049) break;
0102 C089 RJMP 0x018C
0103 9503 INC R16
0104 3400 CPI R16,0x40
0105 F2D0 BCS 0x00E0
(0050) }
(0051) }
(0052) }
0106 C085 RJMP 0x018C
(0053) else if (Fifo1_Flag==0x02)
0107 91800062 LDS R24,0x62
0109 3082 CPI R24,2
010A F009 BEQ 0x010C
010B C080 RJMP 0x018C
(0054) {
(0055) for(i=0;i<64;i++)
010C 2700 CLR R16
010D C004 RJMP 0x0112
(0056) {
(0057) D12_DATA=0x00;
010E 2422 CLR R2
010F 92207F00 STS 0x7F00,R2
0111 9503 INC R16
0112 3400 CPI R16,0x40
0113 F3D0 BCS 0x010E
(0058) }
(0059) }
(0060) }
0114 C077 RJMP 0x018C
(0061) else if(ch&0x02)//fifo2
0115 FF21 SBRS R18,1
0116 C068 RJMP 0x017F
(0062) {
(0063) if(Fifo2_Flag==0x00)
0117 90200063 LDS R2,0x63
0119 2022 TST R2
011A F551 BNE 0x0145
(0064) {
(0065) D12_DATA=FIRST_CMD;
011B EA8A LDI R24,0xAA
011C 93807F00 STS 0x7F00,R24
(0066) D12_DATA=SECOND_CMD;
011E E585 LDI R24,0x55
011F 93807F00 STS 0x7F00,R24
(0067) D12_DATA=THIRD_CMD;
0121 EE8B LDI R24,0xEB
0122 93807F00 STS 0x7F00,R24
(0068) D12_DATA=FOURTH_CMD;
0124 E980 LDI R24,0x90
0125 93807F00 STS 0x7F00,R24
(0069) Fifo1_Flag=0x00;
0127 2422 CLR R2
0128 92200062 STS 0x62,R2
(0070) Fifo2_Flag=0x01;
012A E081 LDI R24,1
012B 93800063 STS 0x63,R24
(0071) Pixel_Count=0x00;
012D 2433 CLR R3
012E 92300065 STS 0x65,R3
0130 92200064 STS 0x64,R2
(0072) for(i=0;i<60;i++)
0132 2700 CLR R16
0133 C00E RJMP 0x0142
(0073) {
(0074) D12_DATA=fifo2;
0134 9020DF00 LDS R2,0xDF00
0136 92207F00 STS 0x7F00,R2
(0075) Pixel_Count++;
0138 91800064 LDS R24,0x64
013A 91900065 LDS R25,0x65
013C 9601 ADIW R24,1
013D 93900065 STS 0x65,R25
013F 93800064 STS 0x64,R24
0141 9503 INC R16
0142 330C CPI R16,0x3C
0143 F380 BCS 0x0134
(0076) }
(0077) }
0144 C047 RJMP 0x018C
(0078) else if(Fifo2_Flag==0x01)
0145 91800063 LDS R24,0x63
0147 3081 CPI R24,1
0148 F549 BNE 0x0172
(0079) {
(0080) for(i=0;i<64;i++)
0149 2700 CLR R16
014A C024 RJMP 0x016F
(0081) {
(0082) D12_DATA=fifo2;
014B 9020DF00 LDS R2,0xDF00
014D 92207F00 STS 0x7F00,R2
(0083) Pixel_Count++;
014F 91800064 LDS R24,0x64
0151 91900065 LDS R25,0x65
0153 9601 ADIW R24,1
0154 93900065 STS 0x65,R25
0156 93800064 STS 0x64,R24
(0084) if(Pixel_Count==2048)
0158 3080 CPI R24,0
0159 E0E8 LDI R30,0x8
015A 079E CPC R25,R30
015B F491 BNE 0x016E
(0085) {
(0086) Fifo2_Flag=0x02;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -