📄 app.lst
字号:
__text_start:
__start:
00D3 EDCF LDI R28,0xDF
00D4 E0D0 LDI R29,0
00D5 BFCD OUT 0x3D,R28
00D6 BFDE OUT 0x3E,R29
00D7 51C0 SUBI R28,0x10
00D8 40D0 SBCI R29,0
00D9 EA0A LDI R16,0xAA
00DA 8308 STD Y+0,R16
00DB 2400 CLR R0
00DC E9E0 LDI R30,0x90
00DD E0F0 LDI R31,0
00DE E010 LDI R17,0
00DF 39E1 CPI R30,0x91
00E0 07F1 CPC R31,R17
00E1 F011 BEQ 0x00E4
00E2 9201 ST R0,Z+
00E3 CFFB RJMP 0x00DF
00E4 8300 STD Z+0,R16
00E5 E7E6 LDI R30,0x76
00E6 E0F1 LDI R31,1
00E7 E6A0 LDI R26,0x60
00E8 E0B0 LDI R27,0
00E9 E011 LDI R17,1
00EA 3AE6 CPI R30,0xA6
00EB 07F1 CPC R31,R17
00EC F021 BEQ 0x00F1
00ED 95C8 LPM
00EE 9631 ADIW R30,1
00EF 920D ST R0,X+
00F0 CFF9 RJMP 0x00EA
00F1 D001 RCALL _main
_exit:
00F2 CFFF RJMP _exit
FILE: D:\单片机程序\AVR\LSAVR~1\LBT-FC8B暴光管TEST\APP.c
(0001)
(0002) //ICC-AVR application builder : 2006-1-5
(0003) //Target : ATtiny2313
(0004) // Crystal: 7.3728Mhz
(0005) #include <iot2313v.h>
(0006) #include <macros.h>
(0007) typedef unsigned char uchar;
(0008) typedef unsigned int uint;
(0009) #define CLK PORTD3
(0010) #define DA PORTD4
(0011) #define RCK PORTD5
(0012) #define EN PORTD6
(0013) static uchar fg_rin;
(0014) static uchar redata[48]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};
(0015) //********************************
(0016) const uchar table[16]=
(0017) {
(0018) //0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,
(0019) 0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0020) };
(0021) //**********************************
(0022) const uchar table1[24][8]=
(0023) {
(0024) //**********************************
(0025) 0x44,0x44,0x44,0x41,0x14,0x44,0x44,0x44,
(0026) 0x44,0x44,0x44,0x11,0x11,0x44,0x44,0x44,
(0027) 0x44,0x44,0x41,0x11,0x11,0x14,0x44,0x44,
(0028) 0x44,0x44,0x11,0x11,0x11,0x11,0x44,0x44,
(0029) 0x44,0x41,0x11,0x11,0x11,0x11,0x14,0x44,
(0030) 0x44,0x11,0x11,0x11,0x11,0x11,0x11,0x44,
(0031) 0x41,0x11,0x11,0x11,0x11,0x11,0x11,0x14,
(0032) 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
(0033) //**************************************
(0034) 0x11,0x11,0x11,0x12,0x21,0x11,0x11,0x11,
(0035) 0x11,0x11,0x11,0x22,0x22,0x11,0x11,0x11,
(0036) 0x11,0x11,0x12,0x22,0x22,0x21,0x11,0x11,
(0037) 0x11,0x11,0x22,0x22,0x22,0x22,0x11,0x11,
(0038) 0x11,0x12,0x22,0x22,0x22,0x22,0x21,0x11,
(0039) 0x11,0x22,0x22,0x22,0x22,0x22,0x22,0x11,
(0040) 0x12,0x22,0x22,0x22,0x22,0x22,0x22,0x21,
(0041) 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
(0042) //************************************
(0043) 0x22,0x22,0x22,0x24,0x42,0x22,0x22,0x22,
(0044) 0x22,0x22,0x22,0x44,0x44,0x22,0x22,0x22,
(0045) 0x22,0x22,0x24,0x44,0x44,0x42,0x22,0x22,
(0046) 0x22,0x22,0x44,0x44,0x44,0x44,0x22,0x22,
(0047) 0x22,0x24,0x44,0x44,0x44,0x44,0x42,0x22,
(0048) 0x22,0x44,0x44,0x44,0x44,0x44,0x44,0x22,
(0049) 0x24,0x44,0x44,0x44,0x44,0x44,0x44,0x42,
(0050) 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
(0051) //***********************************
(0052)
(0053) };
(0054) //***************************
(0055) const uchar table2[16][8]=
(0056) {
(0057) 0x11,0x11,0x22,0x22,0x55,0x55,0x44,0x44,
(0058) 0x11,0x12,0x22,0x25,0x55,0x54,0x44,0x41,
(0059) 0x11,0x22,0x22,0x55,0x55,0x44,0x44,0x11,
(0060) 0x12,0x22,0x25,0x55,0x54,0x44,0x41,0x11,
(0061) 0x22,0x22,0x55,0x55,0x44,0x44,0x11,0x11,
(0062) 0x22,0x25,0x55,0x54,0x44,0x41,0x11,0x12,
(0063) 0x22,0x55,0x55,0x44,0x44,0x11,0x11,0x22,
(0064) 0x25,0x55,0x54,0x44,0x41,0x11,0x12,0x22,
(0065) 0x55,0x55,0x44,0x44,0x11,0x11,0x22,0x22,
(0066) 0x55,0x54,0x44,0x41,0x11,0x12,0x22,0x25,
(0067) 0x55,0x44,0x44,0x11,0x11,0x22,0x22,0x55,
(0068) 0x54,0x44,0x41,0x11,0x12,0x22,0x25,0x55,
(0069) 0x44,0x44,0x11,0x11,0x22,0x22,0x55,0x55,
(0070) 0x44,0x41,0x11,0x12,0x22,0x25,0x55,0x54,
(0071) 0x44,0x11,0x11,0x22,0x22,0x55,0x55,0x44,
(0072) 0x41,0x11,0x12,0x22,0x25,0x55,0x54,0x44,
(0073) };
(0074) //========函数定义
(0075) void port_init(void);
(0076) void watchdog_init(void);
(0077) void uart0_init(void);
(0078) void delay(uchar count );
(0079) void init_devices(void);
(0080) void send(void);
(0081) /************************
(0082) **Main Program
(0083) **************************/
(0084) void main(void)
(0085) {
(0086) signed n;
(0087) uchar i,j,word,temp;
(0088) uchar *redata_addr;
(0089) const uchar *paddr;
(0090) //****************
(0091) init_devices();
_main:
paddr --> Y+1
redata_addr --> Y+1
temp --> Y+1
word --> Y+1
j --> Y+1
i --> R20
n --> R22
00F3 D09A RCALL _init_devices
(0092) delay(5);
00F4 E005 LDI R16,5
00F5 D0A0 RCALL _delay
(0093) fg_rin=0;
00F6 2422 CLR R2
00F7 92200090 STS 0x90,R2
00F9 C044 RJMP 0x013E
(0094) //********************************
(0095)
(0096) while(1)
(0097) {
(0098) //*********************
(0099) for(i=0;i<16;i++)
00FA 2744 CLR R20
00FB C03F RJMP 0x013B
(0100) {
(0101) for(n=47;n>0;n--)
00FC E26F LDI R22,0x2F
00FD E070 LDI R23,0
(0102) redata[n]=(redata[n]<<4)|(redata[n-1]>>4);
00FE E680 LDI R24,0x60
00FF E090 LDI R25,0
0100 2E26 MOV R2,R22
0101 2E37 MOV R3,R23
0102 0E28 ADD R2,R24
0103 1E39 ADC R3,R25
0104 E58F LDI R24,0x5F
0105 E090 LDI R25,0
0106 2FE6 MOV R30,R22
0107 2FF7 MOV R31,R23
0108 0FE8 ADD R30,R24
0109 1FF9 ADC R31,R25
010A 8180 LDD R24,Z+0
010B 9582 SWAP R24
010C 708F ANDI R24,0xF
010D 2DE2 MOV R30,R2
010E 2DF3 MOV R31,R3
010F 8190 LDD R25,Z+0
0110 709F ANDI R25,0xF
0111 9592 SWAP R25
0112 2B98 OR R25,R24
0113 8390 STD Z+0,R25
0114 5061 SUBI R22,1
0115 4070 SBCI R23,0
0116 2422 CLR R2
0117 2433 CLR R3
0118 1626 CP R2,R22
0119 0637 CPC R3,R23
011A F31C BLT 0x00FE
(0103) redata[n]<<=4;
011B E680 LDI R24,0x60
011C E090 LDI R25,0
011D 2E26 MOV R2,R22
011E 2E37 MOV R3,R23
011F 0E28 ADD R2,R24
0120 1E39 ADC R3,R25
0121 2DE2 MOV R30,R2
0122 2DF3 MOV R31,R3
0123 8180 LDD R24,Z+0
0124 708F ANDI R24,0xF
0125 9582 SWAP R24
0126 8380 STD Z+0,R24
(0104) redata[0]|=table[i]&0x0f;
0127 E286 LDI R24,0x26
0128 E090 LDI R25,0
0129 2E24 MOV R2,R20
012A 2433 CLR R3
012B 0E28 ADD R2,R24
012C 1E39 ADC R3,R25
012D 2DE2 MOV R30,R2
012E 2DF3 MOV R31,R3
012F 95C8 LPM
0130 2D80 MOV R24,R0
0131 708F ANDI R24,0xF
0132 90200060 LDS R2,0x60
0134 2A28 OR R2,R24
0135 92200060 STS 0x60,R2
(0105) //*******************************transmit data
(0106) send();
0137 D072 RCALL _send
(0107) delay(2);
0138 E002 LDI R16,2
0139 D05C RCALL _delay
013A 9543 INC R20
013B 3140 CPI R20,0x10
013C F408 BCC 0x013E
013D CFBE RJMP 0x00FC
013E CFBB RJMP 0x00FA
(0108) }
(0109) //while(1)
(0110) //WDR();
(0111) }
(0112) //**************************Three Color Test
(0113) //*********************
(0114)
(0115) //******************************
(0116) }//MAIN PROGRAM
013F 9508 RET
_uart0_rx_isr:
addr --> R18
temp --> R16
i --> R16
0140 922A ST R2,-Y
0141 923A ST R3,-Y
0142 930A ST R16,-Y
0143 932A ST R18,-Y
0144 938A ST R24,-Y
0145 939A ST R25,-Y
0146 93EA ST R30,-Y
0147 93FA ST R31,-Y
0148 B62F IN R2,0x3F
0149 922A ST R2,-Y
(0117) /*********************************
(0118) **接收数据
(0119) **********************************/
(0120) #pragma interrupt_handler uart0_rx_isr:8
(0121) void uart0_rx_isr(void)
(0122) {
(0123) uchar i,temp;
(0124) uchar addr=40;
014A E228 LDI R18,0x28
(0125) temp=UDR;
014B B10C IN R16,0x0C
(0126) if(temp==addr||temp==100||temp==255)//地址判断
014C 1702 CP R16,R18
014D F021 BEQ 0x0152
014E 3604 CPI R16,0x64
014F F011 BEQ 0x0152
0150 3F0F CPI R16,0xFF
0151 F4C9 BNE 0x016B
(0127) {
(0128) UCSRA&=~BIT(MPCM);//取消地址接收
0152 9858 CBI 0x0B,0
(0129) for(i=0;i<8;i++)
0153 2700 CLR R16
0154 C010 RJMP 0x0165
(0130) {
(0131) while(!(UCSRA&0x80))WDR(); ;
0155 95A8 WDR
0156 9B5F SBIS 0x0B,7
0157 CFFD RJMP 0x0155
(0132) redata[7-i]=UDR;//读UDR时RXC将自动清除
0158 2E20 MOV R2,R16
0159 2433 CLR R3
015A E0E7 LDI R30,7
015B E0F0 LDI R31,0
015C 19E2 SUB R30,R2
015D 09F3 SBC R31,R3
015E E680 LDI R24,0x60
015F E090 LDI R25,0
0160 0FE8 ADD R30,R24
0161 1FF9 ADC R31,R25
0162 B02C IN R2,0x0C
0163 8220 STD Z+0,R2
0164 9503 INC R16
0165 3008 CPI R16,0x8
0166 F378 BCS 0x0156
(0133) }
(0134) UCSRA|=BIT(MPCM);//允许地址接收
0167 9A58 SBI 0x0B,0
(0135) fg_rin=0x01;//设置接收数据标志
0168 E081 LDI R24,1
0169 93800090 STS 0x90,R24
(0136) }
(0137) }
016B 9029 LD R2,Y+
016C BE2F OUT 0x3F,R2
016D 91F9 LD R31,Y+
016E 91E9 LD R30,Y+
016F 9199 LD R25,Y+
0170 9189 LD R24,Y+
0171 9129 LD R18,Y+
0172 9109 LD R16,Y+
0173 9039 LD R3,Y+
0174 9029 LD R2,Y+
0175 9518 RETI
(0138) void port_init(void)
(0139) {
(0140) PORTB = 0xff;
_port_init:
0176 EF8F LDI R24,0xFF
0177 BB88 OUT 0x18,R24
(0141) DDRB = 0x00;
0178 2422 CLR R2
0179 BA27 OUT 0x17,R2
(0142) PORTD = 0x00;
017A BA22 OUT 0x12,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -