?? max525.lis
字號:
.module max525.c
.area text(rom, con, rel)
0000 .dbfile D:/PROGRA~1/icc/include/delay.h
0000 .dbfunc e delay_1us _delay_1us fV
.even
0000 _delay_1us::
0000 .dbline -1
0000 .dbline 6
0000 ; //ICC-AVR application builder : 2007-8-11 14:36:41
0000 ; // Target : M16
0000 ; // Crystal: 16.000Mhz
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 .dbline 7
0000 ; #include <delay.h>
0000 0000 nop
0002 .dbline -2
0002 L1:
0002 .dbline 0 ; func end
0002 0895 ret
0004 .dbend
0004 .dbfunc e delay_nus _delay_nus fV
0004 ; i -> R20,R21
0004 ; n -> R22,R23
.even
0004 _delay_nus::
0004 0E940000 xcall push_gset2
0008 B801 movw R22,R16
000A .dbline -1
000A .dbline 11
000A ;
000A ; ///////////////////////硬件接口/////////////////
000A ; #define DDR DDRA
000A ; #define PORT PORTA
000A .dbline 12
000A ; #define PIN PINA
000A 4427 clr R20
000C 5527 clr R21
000E .dbline 13
000E ; ///////////////////控制////////////////////////
000E 03C0 xjmp L6
0010 L3:
0010 .dbline 14
0010 F7DF xcall _delay_1us
0012 L4:
0012 .dbline 13
0012 4F5F subi R20,255 ; offset = 1
0014 5F4F sbci R21,255
0016 L6:
0016 .dbline 13
0016 4617 cp R20,R22
0018 5707 cpc R21,R23
001A D0F3 brlo L3
001C .dbline -2
001C L2:
001C 0E940000 xcall pop_gset2
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbsym r i 20 i
0022 .dbsym r n 22 i
0022 .dbend
0022 .dbfunc e delay_1ms _delay_1ms fV
0022 ; i -> R16,R17
.even
0022 _delay_1ms::
0022 .dbline -1
0022 .dbline 18
0022 ; #define CS_525 0
0022 ; #define DIN_525 1
0022 ; #define SCLK_525 2
0022 ; #define SETBIT(x,y) (x|=(1<<y)) //set bit y in byte x
0022 ; #define CLRBIT(x,y) (x&=(~(1<<y))) //clear bit y in byte x
0022 .dbline 20
0022 0027 clr R16
0024 1127 clr R17
0026 02C0 xjmp L11
0028 L8:
0028 .dbline 20
0028 L9:
0028 .dbline 20
0028 0F5F subi R16,255 ; offset = 1
002A 1F4F sbci R17,255
002C L11:
002C .dbline 20
002C ; #define CHKBIT(x,y) (x&(1<<y)) //check bit y in byte x
002C ; ///////////////////////////////////////////////
002C 0437 cpi R16,116
002E E4E0 ldi R30,4
0030 1E07 cpc R17,R30
0032 D0F3 brlo L8
0034 .dbline -2
0034 L7:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r i 16 i
0036 .dbend
0036 .dbfunc e delay_nms _delay_nms fV
0036 ; i -> R20,R21
0036 ; n -> R22,R23
.even
0036 _delay_nms::
0036 0E940000 xcall push_gset2
003A B801 movw R22,R16
003C .dbline -1
003C .dbline 24
003C ; #define Reg_Unchanged 0x0D
003C ; #define Reg_Updated 0X0f
003C ; #define Start_Up_Reg 0x04
003C ; #define Start_Up_Load 0x08
003C .dbline 25
003C ; #define Shutdown 0x0c
003C 4427 clr R20
003E 5527 clr R21
0040 .dbline 26
0040 ; //#define Mode_1 0x0e
0040 03C0 xjmp L16
0042 L13:
0042 .dbline 27
0042 EFDF xcall _delay_1ms
0044 L14:
0044 .dbline 26
0044 4F5F subi R20,255 ; offset = 1
0046 5F4F sbci R21,255
0048 L16:
0048 .dbline 26
0048 4617 cp R20,R22
004A 5707 cpc R21,R23
004C D0F3 brlo L13
004E .dbline -2
004E L12:
004E 0E940000 xcall pop_gset2
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbsym r i 20 i
0054 .dbsym r n 22 i
0054 .dbend
0054 .dbfile C:\DOCUME~1\luning\桌面\數控橫流源\max525\max525.c
0054 .dbfunc e Sent_to_max525 _Sent_to_max525 fV
0054 ; j -> R20
0054 ; i -> R22
0054 ; Data -> R10,R11
0054 ; Addr -> R12
.even
0054 _Sent_to_max525::
0054 0E940000 xcall push_gset4
0058 5901 movw R10,R18
005A C02E mov R12,R16
005C .dbline -1
005C .dbline 31
005C ; //#define Mode_2 0x0a
005C ; //////////////////////////////////////////////
005C ;
005C ; void Sent_to_max525(unsigned char Addr,int Data)
005C ; {
005C .dbline 33
005C ; unsigned char i,j;//temp;
005C ; CLRBIT(PORT,CS_525); //CS=0
005C D898 cbi 0x1b,0
005E .dbline 38
005E ;
005E ; //CLRBIT(PORT,SCLK_525);
005E ; //SETBIT(PORT,SCLK_525);
005E ; ////////////////////////////////////////////////
005E ; for (i=0;i<4;i++) //傳地址4位
005E 6627 clr R22
0060 09C0 xjmp L21
0062 L18:
0062 .dbline 39
0062 ; {
0062 .dbline 41
0062 ;
0062 ; CLRBIT(PORT,SCLK_525);
0062 DA98 cbi 0x1b,2
0064 .dbline 43
0064 ;
0064 ; if(Addr&0x08)
0064 C3FE sbrs R12,3
0066 02C0 rjmp L22
0068 .dbline 44
0068 ; SETBIT(PORT,DIN_525);
0068 D99A sbi 0x1b,1
006A 01C0 xjmp L23
006C L22:
006C .dbline 46
006C ; else
006C ; CLRBIT(PORT,DIN_525);
006C D998 cbi 0x1b,1
006E L23:
006E .dbline 49
006E DA9A sbi 0x1b,2
0070 .dbline 51
0070 CC0C lsl R12
0072 .dbline 52
0072 L19:
0072 .dbline 38
0072 6395 inc R22
0074 L21:
0074 .dbline 38
0074 6430 cpi R22,4
0076 A8F3 brlo L18
0078 .dbline 54
0078 ;
0078 ;
0078 ; SETBIT(PORT,SCLK_525);
0078 ; //CLRBIT(PORT,SCLK_525);
0078 ; Addr=Addr<<1;
0078 ; }
0078 ; /////////////////////////////////////////////////////
0078 ; for (j=0;j<12;j++) //傳數據12位
0078 4427 clr R20
007A 0AC0 xjmp L27
007C L24:
007C .dbline 55
007C ; {
007C .dbline 57
007C ;
007C ; CLRBIT(PORT,SCLK_525);
007C DA98 cbi 0x1b,2
007E .dbline 59
007E ;
007E ; if(Data&0x0800)
007E B3FE sbrs R11,3
0080 02C0 rjmp L28
0082 .dbline 60
0082 ; SETBIT(PORT,DIN_525);
0082 D99A sbi 0x1b,1
0084 01C0 xjmp L29
0086 L28:
0086 .dbline 62
0086 ; else
0086 ; CLRBIT(PORT,DIN_525);
0086 D998 cbi 0x1b,1
0088 L29:
0088 .dbline 64
0088 DA9A sbi 0x1b,2
008A .dbline 65
008A AA0C lsl R10
008C BB1C rol R11
008E .dbline 66
008E L25:
008E .dbline 54
008E 4395 inc R20
0090 L27:
0090 .dbline 54
0090 4C30 cpi R20,12
0092 A0F3 brlo L24
0094 .dbline 68
0094 ;
0094 ; SETBIT(PORT,SCLK_525);
0094 ; Data=Data<<1;
0094 ; }
0094 ;
0094 ; SETBIT(PORT,SCLK_525);
0094 DA9A sbi 0x1b,2
0096 .dbline 69
0096 ; delay_nus(50);
0096 02E3 ldi R16,50
0098 10E0 ldi R17,0
009A B4DF xcall _delay_nus
009C .dbline 70
009C ; CLRBIT(PORT,SCLK_525);
009C DA98 cbi 0x1b,2
009E .dbline 71
009E ; SETBIT(PORT,CS_525); //CS=1
009E D89A sbi 0x1b,0
00A0 .dbline -2
00A0 L17:
00A0 0E940000 xcall pop_gset4
00A4 .dbline 0 ; func end
00A4 0895 ret
00A6 .dbsym r j 20 c
00A6 .dbsym r i 22 c
00A6 .dbsym r Data 10 I
00A6 .dbsym r Addr 12 c
00A6 .dbend
00A6 .dbfunc e port_init _port_init fV
.even
00A6 _port_init::
00A6 .dbline -1
00A6 .dbline 76
00A6 ; }
00A6 ;
00A6 ; ///////////////////////////////////////////////////////
00A6 ; void port_init(void)
00A6 ; {
00A6 .dbline 77
00A6 ; PORTA = 0xff;
00A6 8FEF ldi R24,255
00A8 8BBB out 0x1b,R24
00AA .dbline 78
00AA ; DDRA = 0xff;
00AA 8ABB out 0x1a,R24
00AC .dbline 79
00AC ; PORTB = 0xff;
00AC 88BB out 0x18,R24
00AE .dbline 80
00AE ; DDRB = 0xff;
00AE 87BB out 0x17,R24
00B0 .dbline 81
00B0 ; PORTC = 0x00; //m103 output only
00B0 2224 clr R2
00B2 25BA out 0x15,R2
00B4 .dbline 82
00B4 ; DDRC = 0x00;
00B4 24BA out 0x14,R2
00B6 .dbline 83
00B6 ; PORTD = 0x00;
00B6 22BA out 0x12,R2
00B8 .dbline 84
00B8 ; DDRD = 0x00;
00B8 21BA out 0x11,R2
00BA .dbline -2
00BA L30:
00BA .dbline 0 ; func end
00BA 0895 ret
00BC .dbend
00BC .dbfunc e init_devices _init_devices fV
.even
00BC _init_devices::
00BC .dbline -1
00BC .dbline 89
00BC ; }
00BC ;
00BC ; //call this routine to initialize all peripherals
00BC ; void init_devices(void)
00BC ; {
00BC .dbline 91
00BC ; //stop errant interrupts until set up
00BC ; CLI(); //disable all interrupts
00BC F894 cli
00BE .dbline 92
00BE ; port_init();
00BE F3DF xcall _port_init
00C0 .dbline 94
00C0 ;
00C0 ; MCUCR = 0x00;
00C0 2224 clr R2
00C2 25BE out 0x35,R2
00C4 .dbline 95
00C4 ; GICR = 0x00;
00C4 2BBE out 0x3b,R2
00C6 .dbline 96
00C6 ; TIMSK = 0x00; //timer interrupt sources
00C6 29BE out 0x39,R2
00C8 .dbline 97
00C8 ; SEI(); //re-enable interrupts
00C8 7894 sei
00CA .dbline -2
00CA L31:
00CA .dbline 0 ; func end
00CA 0895 ret
00CC .dbend
00CC .dbfunc e main _main fV
.even
00CC _main::
00CC .dbline -1
00CC .dbline 102
00CC ; //all peripherals are now initialized
00CC ; }
00CC ;
00CC ; void main()
00CC ; {
00CC .dbline 104
00CC ; // unsigned char i,Addr=0xaA;
00CC ; init_devices();
00CC F7DF xcall _init_devices
00CE .dbline 106
00CE ; //CLI();
00CE ; Sent_to_max525(0x04,0x000);
00CE 2227 clr R18
00D0 3327 clr R19
00D2 04E0 ldi R16,4
00D4 BFDF xcall _Sent_to_max525
00D6 08C0 xjmp L34
00D8 L33:
00D8 .dbline 108
00D8 .dbline 112
00D8 2FEF ldi R18,4095
00DA 3FE0 ldi R19,15
00DC 0FE0 ldi R16,15
00DE BADF xcall _Sent_to_max525
00E0 .dbline 113
00E0 2227 clr R18
00E2 3327 clr R19
00E4 0FE0 ldi R16,15
00E6 B6DF xcall _Sent_to_max525
00E8 .dbline 120
00E8 L34:
00E8 .dbline 107
00E8 F7CF xjmp L33
00EA X0:
00EA .dbline -2
00EA L32:
00EA .dbline 0 ; func end
00EA 0895 ret
00EC .dbend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -