?? max525.lst
字號:
__text_start:
__start:
002A E5CF LDI R28,0x5F
002B E0D4 LDI R29,4
002C BFCD OUT 0x3D,R28
002D BFDE OUT 0x3E,R29
002E 51C0 SUBI R28,0x10
002F 40D0 SBCI R29,0
0030 EA0A LDI R16,0xAA
0031 8308 STD Y+0,R16
0032 2400 CLR R0
0033 E6E0 LDI R30,0x60
0034 E0F0 LDI R31,0
0035 E010 LDI R17,0
0036 36E0 CPI R30,0x60
0037 07F1 CPC R31,R17
0038 F011 BEQ 0x003B
0039 9201 ST R0,Z+
003A CFFB RJMP 0x0036
003B 8300 STD Z+0,R16
003C E5E4 LDI R30,0x54
003D E0F0 LDI R31,0
003E E6A0 LDI R26,0x60
003F E0B0 LDI R27,0
0040 E010 LDI R17,0
0041 35E4 CPI R30,0x54
0042 07F1 CPC R31,R17
0043 F021 BEQ 0x0048
0044 95C8 LPM
0045 9631 ADIW R30,1
0046 920D ST R0,X+
0047 CFF9 RJMP 0x0041
0048 940E00B1 CALL _main
_exit:
004A CFFF RJMP _exit
FILE: D:\PROGRA~1\icc\include\delay.h
(0001) /*-----------------------------------------------------------------------
(0002) 延時函數
(0003) 系統時鐘:8M
(0004) -----------------------------------------------------------------------*/
(0005) void delay_1us(void) //1us延時函數
(0006) {
(0007) asm("nop");
_delay_1us:
004B 0000 NOP
004C 9508 RET
_delay_nus:
i --> R20
n --> R22
004D 940E00CD CALL push_gset2
004F 01B8 MOVW R22,R16
(0008) }
(0009)
(0010) void delay_nus(unsigned int n) //N us延時函數
(0011) {
(0012) unsigned int i=0;
0050 2744 CLR R20
0051 2755 CLR R21
(0013) for (i=0;i<n;i++)
0052 C003 RJMP 0x0056
(0014) delay_1us();
0053 DFF7 RCALL _delay_1us
0054 5F4F SUBI R20,0xFF
0055 4F5F SBCI R21,0xFF
0056 1746 CP R20,R22
0057 0757 CPC R21,R23
0058 F3D0 BCS 0x0053
0059 940E00C1 CALL pop_gset2
005B 9508 RET
(0015) }
(0016)
(0017) void delay_1ms(void) //1ms延時函數
(0018) {
(0019) unsigned int i;
(0020) for (i=0;i<1140;i++);
_delay_1ms:
i --> R16
005C 2700 CLR R16
005D 2711 CLR R17
005E C002 RJMP 0x0061
005F 5F0F SUBI R16,0xFF
0060 4F1F SBCI R17,0xFF
0061 3704 CPI R16,0x74
0062 E0E4 LDI R30,4
0063 071E CPC R17,R30
0064 F3D0 BCS 0x005F
0065 9508 RET
_delay_nms:
i --> R20
n --> R22
0066 940E00CD CALL push_gset2
0068 01B8 MOVW R22,R16
(0021) }
(0022)
(0023) void delay_nms(unsigned int n) //N ms延時函數
(0024) {
(0025) unsigned int i=0;
0069 2744 CLR R20
006A 2755 CLR R21
(0026) for (i=0;i<n;i++)
006B C003 RJMP 0x006F
(0027) delay_1ms();
006C DFEF RCALL _delay_1ms
006D 5F4F SUBI R20,0xFF
006E 4F5F SBCI R21,0xFF
006F 1746 CP R20,R22
0070 0757 CPC R21,R23
0071 F3D0 BCS 0x006C
0072 940E00C1 CALL pop_gset2
0074 9508 RET
_Sent_to_max525:
j --> R20
i --> R22
Data --> R10
Addr --> R12
0075 940E00C9 CALL push_gset4
0077 0159 MOVW R10,R18
0078 2EC0 MOV R12,R16
FILE: C:\DOCUME~1\luning\桌面\數控橫流源\max525\max525.c
(0001) //ICC-AVR application builder : 2007-8-11 14:36:41
(0002) // Target : M16
(0003) // Crystal: 16.000Mhz
(0004)
(0005) #include <iom16v.h>
(0006) #include <macros.h>
(0007) #include <delay.h>
(0008)
(0009) ///////////////////////硬件接口/////////////////
(0010) #define DDR DDRA
(0011) #define PORT PORTA
(0012) #define PIN PINA
(0013) ///////////////////控制////////////////////////
(0014) #define CS_525 0
(0015) #define DIN_525 1
(0016) #define SCLK_525 2
(0017) #define SETBIT(x,y) (x|=(1<<y)) //set bit y in byte x
(0018) #define CLRBIT(x,y) (x&=(~(1<<y))) //clear bit y in byte x
(0019) #define CHKBIT(x,y) (x&(1<<y)) //check bit y in byte x
(0020) ///////////////////////////////////////////////
(0021) #define Reg_Unchanged 0x0D
(0022) #define Reg_Updated 0X0f
(0023) #define Start_Up_Reg 0x04
(0024) #define Start_Up_Load 0x08
(0025) #define Shutdown 0x0c
(0026) //#define Mode_1 0x0e
(0027) //#define Mode_2 0x0a
(0028) //////////////////////////////////////////////
(0029)
(0030) void Sent_to_max525(unsigned char Addr,int Data)
(0031) {
(0032) unsigned char i,j;//temp;
(0033) CLRBIT(PORT,CS_525); //CS=0
0079 98D8 CBI 0x1B,0
(0034)
(0035) //CLRBIT(PORT,SCLK_525);
(0036) //SETBIT(PORT,SCLK_525);
(0037) ////////////////////////////////////////////////
(0038) for (i=0;i<4;i++) //傳地址4位
007A 2766 CLR R22
007B C009 RJMP 0x0085
(0039) {
(0040)
(0041) CLRBIT(PORT,SCLK_525);
007C 98DA CBI 0x1B,2
(0042)
(0043) if(Addr&0x08)
007D FEC3 SBRS R12,3
007E C002 RJMP 0x0081
(0044) SETBIT(PORT,DIN_525);
007F 9AD9 SBI 0x1B,1
0080 C001 RJMP 0x0082
(0045) else
(0046) CLRBIT(PORT,DIN_525);
0081 98D9 CBI 0x1B,1
(0047)
(0048)
(0049) SETBIT(PORT,SCLK_525);
0082 9ADA SBI 0x1B,2
(0050) //CLRBIT(PORT,SCLK_525);
(0051) Addr=Addr<<1;
0083 0CCC LSL R12
0084 9563 INC R22
0085 3064 CPI R22,4
0086 F3A8 BCS 0x007C
(0052) }
(0053) /////////////////////////////////////////////////////
(0054) for (j=0;j<12;j++) //傳數據12位
0087 2744 CLR R20
0088 C00A RJMP 0x0093
(0055) {
(0056)
(0057) CLRBIT(PORT,SCLK_525);
0089 98DA CBI 0x1B,2
(0058)
(0059) if(Data&0x0800)
008A FEB3 SBRS R11,3
008B C002 RJMP 0x008E
(0060) SETBIT(PORT,DIN_525);
008C 9AD9 SBI 0x1B,1
008D C001 RJMP 0x008F
(0061) else
(0062) CLRBIT(PORT,DIN_525);
008E 98D9 CBI 0x1B,1
(0063)
(0064) SETBIT(PORT,SCLK_525);
008F 9ADA SBI 0x1B,2
(0065) Data=Data<<1;
0090 0CAA LSL R10
0091 1CBB ROL R11
0092 9543 INC R20
0093 304C CPI R20,0xC
0094 F3A0 BCS 0x0089
(0066) }
(0067)
(0068) SETBIT(PORT,SCLK_525);
0095 9ADA SBI 0x1B,2
(0069) delay_nus(50);
0096 E302 LDI R16,0x32
0097 E010 LDI R17,0
0098 DFB4 RCALL _delay_nus
(0070) CLRBIT(PORT,SCLK_525);
0099 98DA CBI 0x1B,2
(0071) SETBIT(PORT,CS_525); //CS=1
009A 9AD8 SBI 0x1B,0
009B 940E00C4 CALL pop_gset4
009D 9508 RET
(0072) }
(0073)
(0074) ///////////////////////////////////////////////////////
(0075) void port_init(void)
(0076) {
(0077) PORTA = 0xff;
_port_init:
009E EF8F LDI R24,0xFF
009F BB8B OUT 0x1B,R24
(0078) DDRA = 0xff;
00A0 BB8A OUT 0x1A,R24
(0079) PORTB = 0xff;
00A1 BB88 OUT 0x18,R24
(0080) DDRB = 0xff;
00A2 BB87 OUT 0x17,R24
(0081) PORTC = 0x00; //m103 output only
00A3 2422 CLR R2
00A4 BA25 OUT 0x15,R2
(0082) DDRC = 0x00;
00A5 BA24 OUT 0x14,R2
(0083) PORTD = 0x00;
00A6 BA22 OUT 0x12,R2
(0084) DDRD = 0x00;
00A7 BA21 OUT 0x11,R2
00A8 9508 RET
(0085) }
(0086)
(0087) //call this routine to initialize all peripherals
(0088) void init_devices(void)
(0089) {
(0090) //stop errant interrupts until set up
(0091) CLI(); //disable all interrupts
_init_devices:
00A9 94F8 BCLR 7
(0092) port_init();
00AA DFF3 RCALL _port_init
(0093)
(0094) MCUCR = 0x00;
00AB 2422 CLR R2
00AC BE25 OUT 0x35,R2
(0095) GICR = 0x00;
00AD BE2B OUT 0x3B,R2
(0096) TIMSK = 0x00; //timer interrupt sources
00AE BE29 OUT 0x39,R2
(0097) SEI(); //re-enable interrupts
00AF 9478 BSET 7
00B0 9508 RET
(0098) //all peripherals are now initialized
(0099) }
(0100)
(0101) void main()
(0102) {
(0103) // unsigned char i,Addr=0xaA;
(0104) init_devices();
_main:
00B1 DFF7 RCALL _init_devices
(0105) //CLI();
(0106) Sent_to_max525(0x04,0x000);
00B2 2722 CLR R18
00B3 2733 CLR R19
00B4 E004 LDI R16,4
00B5 DFBF RCALL _Sent_to_max525
00B6 C008 RJMP 0x00BF
(0107) while(1)
(0108) {
(0109) //Sent_to_max525(0x08,0x0);
(0110)
(0111)
(0112) Sent_to_max525(0x0f,0xfff);
00B7 EF2F LDI R18,0xFF
00B8 E03F LDI R19,0xF
00B9 E00F LDI R16,0xF
00BA DFBA RCALL _Sent_to_max525
(0113) Sent_to_max525(0x0f,0x000);
FILE: <library>
00BB 2722 CLR R18
00BC 2733 CLR R19
00BD E00F LDI R16,0xF
00BE DFB6 RCALL _Sent_to_max525
00BF CFF7 RJMP 0x00B7
00C0 9508 RET
pop_gset2:
00C1 E0E2 LDI R30,2
00C2 940C00D3 JMP pop
pop_gset4:
00C4 E0E8 LDI R30,0x8
00C5 940C00D3 JMP pop
push_gset5:
00C7 92FA ST R15,-Y
00C8 92EA ST R14,-Y
push_gset4:
00C9 92DA ST R13,-Y
00CA 92CA ST R12,-Y
push_gset3:
00CB 92BA ST R11,-Y
00CC 92AA ST R10,-Y
push_gset2:
00CD 937A ST R23,-Y
00CE 936A ST R22,-Y
push_gset1:
00CF 935A ST R21,-Y
00D0 934A ST R20,-Y
00D1 9508 RET
pop_gset1:
00D2 E0E1 LDI R30,1
pop:
00D3 9149 LD R20,Y+
00D4 9159 LD R21,Y+
00D5 FDE0 SBRC R30,0
00D6 9508 RET
00D7 9169 LD R22,Y+
00D8 9179 LD R23,Y+
00D9 FDE1 SBRC R30,1
00DA 9508 RET
00DB 90A9 LD R10,Y+
00DC 90B9 LD R11,Y+
00DD FDE2 SBRC R30,2
00DE 9508 RET
00DF 90C9 LD R12,Y+
00E0 90D9 LD R13,Y+
00E1 FDE3 SBRC R30,3
00E2 9508 RET
00E3 90E9 LD R14,Y+
00E4 90F9 LD R15,Y+
00E5 9508 RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -