⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 max525.s

📁 低功耗、四路、12位、电压输出DAC
💻 S
字号:
	.module max525.c
	.area text(rom, con, rel)
	.dbfile D:/PROGRA~1/icc/include/delay.h
	.dbfunc e delay_1us _delay_1us fV
	.even
_delay_1us::
	.dbline -1
	.dbline 6
; //ICC-AVR application builder : 2007-8-11 14:36:41
; // Target : M16
; // Crystal: 16.000Mhz
; 
; #include <iom16v.h>
; #include <macros.h>
	.dbline 7
; #include <delay.h>
	nop
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay_nus _delay_nus fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay_nus::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 11
; 
; ///////////////////////硬件接口/////////////////
; #define DDR         DDRA
; #define PORT        PORTA
	.dbline 12
; #define PIN         PINA
	clr R20
	clr R21
	.dbline 13
; ///////////////////控制////////////////////////
	xjmp L6
L3:
	.dbline 14
	xcall _delay_1us
L4:
	.dbline 13
	subi R20,255  ; offset = 1
	sbci R21,255
L6:
	.dbline 13
	cp R20,R22
	cpc R21,R23
	brlo L3
	.dbline -2
L2:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfunc e delay_1ms _delay_1ms fV
;              i -> R16,R17
	.even
_delay_1ms::
	.dbline -1
	.dbline 18
; #define CS_525      0
; #define DIN_525     1
; #define SCLK_525    2
; #define	SETBIT(x,y) (x|=(1<<y))      //set bit y in byte x
; #define	CLRBIT(x,y) (x&=(~(1<<y)))   //clear bit y in byte x
	.dbline 20
	clr R16
	clr R17
	xjmp L11
L8:
	.dbline 20
L9:
	.dbline 20
	subi R16,255  ; offset = 1
	sbci R17,255
L11:
	.dbline 20
; #define	CHKBIT(x,y) (x&(1<<y))       //check bit y in byte x
; /////////////////////////////////////////////// 
	cpi R16,116
	ldi R30,4
	cpc R17,R30
	brlo L8
	.dbline -2
L7:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 i
	.dbend
	.dbfunc e delay_nms _delay_nms fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay_nms::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 24
; #define Reg_Unchanged    0x0D
; #define Reg_Updated      0X0f
; #define Start_Up_Reg     0x04
; #define Start_Up_Load    0x08
	.dbline 25
; #define Shutdown         0x0c
	clr R20
	clr R21
	.dbline 26
; //#define Mode_1           0x0e
	xjmp L16
L13:
	.dbline 27
	xcall _delay_1ms
L14:
	.dbline 26
	subi R20,255  ; offset = 1
	sbci R21,255
L16:
	.dbline 26
	cp R20,R22
	cpc R21,R23
	brlo L13
	.dbline -2
L12:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfile C:\DOCUME~1\luning\桌面\数控横流源\max525\max525.c
	.dbfunc e Sent_to_max525 _Sent_to_max525 fV
;              j -> R20
;              i -> R22
;           Data -> R10,R11
;           Addr -> R12
	.even
_Sent_to_max525::
	xcall push_gset4
	movw R10,R18
	mov R12,R16
	.dbline -1
	.dbline 31
; //#define Mode_2           0x0a
; //////////////////////////////////////////////
; 
; void Sent_to_max525(unsigned char Addr,int Data)
; {
	.dbline 33
;  unsigned char i,j;//temp;
;  CLRBIT(PORT,CS_525);     //CS=0
	cbi 0x1b,0
	.dbline 38
;  
;  //CLRBIT(PORT,SCLK_525);
;  //SETBIT(PORT,SCLK_525);
;  ////////////////////////////////////////////////
;  for (i=0;i<4;i++)      //传地址4位
	clr R22
	xjmp L21
L18:
	.dbline 39
;  {
	.dbline 41
;    	
;   CLRBIT(PORT,SCLK_525);
	cbi 0x1b,2
	.dbline 43
;   
;   if(Addr&0x08)
	sbrs R12,3
	rjmp L22
	.dbline 44
;     SETBIT(PORT,DIN_525);
	sbi 0x1b,1
	xjmp L23
L22:
	.dbline 46
;   else
;     CLRBIT(PORT,DIN_525);
	cbi 0x1b,1
L23:
	.dbline 49
	sbi 0x1b,2
	.dbline 51
	lsl R12
	.dbline 52
L19:
	.dbline 38
	inc R22
L21:
	.dbline 38
	cpi R22,4
	brlo L18
	.dbline 54
;   
;   	
;   SETBIT(PORT,SCLK_525);
;   //CLRBIT(PORT,SCLK_525);
;    Addr=Addr<<1;
;  }
; /////////////////////////////////////////////////////
;   for (j=0;j<12;j++)      //传数据12位
	clr R20
	xjmp L27
L24:
	.dbline 55
;  {
	.dbline 57
;   
;   CLRBIT(PORT,SCLK_525);
	cbi 0x1b,2
	.dbline 59
;   
;   if(Data&0x0800)
	sbrs R11,3
	rjmp L28
	.dbline 60
;     SETBIT(PORT,DIN_525);
	sbi 0x1b,1
	xjmp L29
L28:
	.dbline 62
;   else
;     CLRBIT(PORT,DIN_525);
	cbi 0x1b,1
L29:
	.dbline 64
	sbi 0x1b,2
	.dbline 65
	lsl R10
	rol R11
	.dbline 66
L25:
	.dbline 54
	inc R20
L27:
	.dbline 54
	cpi R20,12
	brlo L24
	.dbline 68
;    
;   SETBIT(PORT,SCLK_525);
;   Data=Data<<1;
;  }
;   
;   SETBIT(PORT,SCLK_525);
	sbi 0x1b,2
	.dbline 69
;   delay_nus(50);
	ldi R16,50
	ldi R17,0
	xcall _delay_nus
	.dbline 70
;   CLRBIT(PORT,SCLK_525);
	cbi 0x1b,2
	.dbline 71
;   SETBIT(PORT,CS_525);     //CS=1
	sbi 0x1b,0
	.dbline -2
L17:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r j 20 c
	.dbsym r i 22 c
	.dbsym r Data 10 I
	.dbsym r Addr 12 c
	.dbend
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 76
; }
; 
; ///////////////////////////////////////////////////////
; void port_init(void)
; {
	.dbline 77
;  PORTA = 0xff;
	ldi R24,255
	out 0x1b,R24
	.dbline 78
;  DDRA  = 0xff;
	out 0x1a,R24
	.dbline 79
;  PORTB = 0xff;
	out 0x18,R24
	.dbline 80
;  DDRB  = 0xff;
	out 0x17,R24
	.dbline 81
;  PORTC = 0x00; //m103 output only
	clr R2
	out 0x15,R2
	.dbline 82
;  DDRC  = 0x00;
	out 0x14,R2
	.dbline 83
;  PORTD = 0x00;
	out 0x12,R2
	.dbline 84
;  DDRD  = 0x00;
	out 0x11,R2
	.dbline -2
L30:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 89
; }
; 
; //call this routine to initialize all peripherals
; void init_devices(void)
; {
	.dbline 91
;  //stop errant interrupts until set up
;  CLI(); //disable all interrupts
	cli
	.dbline 92
;  port_init();
	xcall _port_init
	.dbline 94
; 
;  MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 95
;  GICR  = 0x00;
	out 0x3b,R2
	.dbline 96
;  TIMSK = 0x00; //timer interrupt sources
	out 0x39,R2
	.dbline 97
;  SEI(); //re-enable interrupts
	sei
	.dbline -2
L31:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 102
;  //all peripherals are now initialized
; }
; 
; void main()
; {
	.dbline 104
; // unsigned char i,Addr=0xaA;
;  init_devices();
	xcall _init_devices
	.dbline 106
;  //CLI();
;    Sent_to_max525(0x04,0x000);
	clr R18
	clr R19
	ldi R16,4
	xcall _Sent_to_max525
	xjmp L34
L33:
	.dbline 108
	.dbline 112
	ldi R18,4095
	ldi R19,15
	ldi R16,15
	xcall _Sent_to_max525
	.dbline 113
	clr R18
	clr R19
	ldi R16,15
	xcall _Sent_to_max525
	.dbline 120
L34:
	.dbline 107
	xjmp L33
X0:
	.dbline -2
L32:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -