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

📄 mcp41010.lst

📁 ATmega16-ad1602
💻 LST
📖 第 1 页 / 共 2 页
字号:
Interrupt Vectors
    00000 940C 002E JMP	__text_start|__start

Program Code (text area)
__text_start|__start:
    0002E E5CF      LDI	R28,0x5F
    0002F E0D4      LDI	R29,4
    00030 BFCD      OUT	0x3D,R28
    00031 BFDE      OUT	0x3E,R29
    00032 51C0      SUBI	R28,0x10
    00033 40D0      SBCI	R29,0
    00034 EA0A      LDI	R16,0xAA
    00035 8308      ST	Y,R16
    00036 2400      CLR	R0
    00037 E6E0      LDI	R30,0x60
    00038 E0F0      LDI	R31,0
    00039 E010      LDI	R17,0
    0003A 36E0      CPI	R30,0x60
    0003B 07F1      CPC	R31,R17
    0003C F011      BEQ	0x003F
    0003D 9201      ST	Z+,R0
    0003E CFFB      RJMP	0x003A
    0003F 8300      ST	Z,R16
    00040 E5EC      LDI	R30,0x5C
    00041 E0F0      LDI	R31,0
    00042 E6A0      LDI	R26,0x60
    00043 E0B0      LDI	R27,0
    00044 E010      LDI	R17,0
    00045 E000      LDI	R16,0
    00046 BF0B      OUT	0x3B,R16
    00047 35EC      CPI	R30,0x5C
    00048 07F1      CPC	R31,R17
    00049 F021      BEQ	0x004E
    0004A 95C8      LPM
    0004B 9631      ADIW	R30,1
    0004C 920D      ST	X+,R0
    0004D CFF9      RJMP	0x0047
    0004E 940E 00C3 CALL	_main
_exit:
    00050 CFFF      RJMP	_exit
FILE: F:\file\数控电源3\ad_da\text\mcp41010.c
(0001) #include<iom16v.h>
(0002) 
(0003) #define r_full		9340
(0004) 
(0005) #define cs_ddr		DDRA
(0006) #define cs_port		PORTA
(0007) #define sck_ddr		DDRA
(0008) #define sck_port	PORTA
(0009) #define si_ddr		DDRA
(0010) #define si_port		PORTA
(0011) #define cs			0x01
(0012) #define sck			0x02
(0013) #define si			0x04
(0014) 
(0015) void r_io_init(void)
(0016) {
(0017) 	cs_ddr|=cs;
_r_io_init:
    00051 9AD0      SBI	0x1A,0
(0018) 	sck_ddr|=sck;
    00052 9AD1      SBI	0x1A,1
(0019) 	si_ddr|=si;
    00053 9AD2      SBI	0x1A,2
(0020) 	cs_port|=cs;
    00054 9AD8      SBI	0x1B,0
(0021) 	sck_port&=~sck;
    00055 98D9      CBI	0x1B,1
(0022) 	si_port&=~si;
    00056 98DA      CBI	0x1B,2
    00057 9508      RET
_write_r:
  count                --> R20
  dat                  --> R18
  cmd                  --> R16
    00058 934A      ST	-Y,R20
(0023) }
(0024) 
(0025) void write_r(unsigned char cmd,unsigned char dat)			//cmd=0x11:write data;	cmd=0x31:cut off
(0026) {
(0027) 	unsigned char count=0;
    00059 2744      CLR	R20
(0028) 	sck_port&=~sck;//sck=0
    0005A 98D9      CBI	0x1B,1
(0029) 	si_port&=~si;//si=0
    0005B 98DA      CBI	0x1B,2
(0030) 	cs_port&=~cs;//cs=0
    0005C 98D8      CBI	0x1B,0
(0031) 	sck_port|=sck;				//0
    0005D 9AD9      SBI	0x1B,1
(0032) 	sck_port&=~sck;
    0005E 98D9      CBI	0x1B,1
(0033) 	sck_port|=sck;				//1
    0005F 9AD9      SBI	0x1B,1
(0034) 	sck_port&=~sck;
    00060 98D9      CBI	0x1B,1
(0035) 	if(cmd&0x20)
    00061 FF05      SBRS	R16,5
    00062 C002      RJMP	0x0065
(0036) 		si_port|=si;
    00063 9ADA      SBI	0x1B,2
    00064 C001      RJMP	0x0066
(0037) 	else
(0038) 		si_port&=~si;
    00065 98DA      CBI	0x1B,2
(0039) 	sck_port|=sck;				//2
    00066 9AD9      SBI	0x1B,1
(0040) 	sck_port&=~sck;
    00067 98D9      CBI	0x1B,1
(0041) 	if(cmd&0x10)
    00068 FF04      SBRS	R16,4
    00069 C002      RJMP	0x006C
(0042) 		si_port|=si;
    0006A 9ADA      SBI	0x1B,2
    0006B C001      RJMP	0x006D
(0043) 	else
(0044) 		si_port&=~si;
    0006C 98DA      CBI	0x1B,2
(0045) 	sck_port|=sck;				//3
    0006D 9AD9      SBI	0x1B,1
(0046) 	sck_port&=~sck;
    0006E 98D9      CBI	0x1B,1
(0047) 	si_port&=~si;
    0006F 98DA      CBI	0x1B,2
(0048) 	sck_port|=sck;				//4
    00070 9AD9      SBI	0x1B,1
(0049) 	sck_port&=~sck;
    00071 98D9      CBI	0x1B,1
(0050) 	sck_port|=sck;				//5
    00072 9AD9      SBI	0x1B,1
(0051) 	sck_port&=~sck;
    00073 98D9      CBI	0x1B,1
(0052) 	if(cmd&0x02)
    00074 FF01      SBRS	R16,1
    00075 C002      RJMP	0x0078
(0053) 		si_port|=si;
    00076 9ADA      SBI	0x1B,2
    00077 C001      RJMP	0x0079
(0054) 	else
(0055) 		si_port&=~si;
    00078 98DA      CBI	0x1B,2
(0056) 	sck_port|=sck;				//6
    00079 9AD9      SBI	0x1B,1
(0057) 	sck_port&=~sck;
    0007A 98D9      CBI	0x1B,1
(0058) 	if(cmd&0x01)
    0007B FF00      SBRS	R16,0
    0007C C002      RJMP	0x007F
(0059) 		si_port|=si;
    0007D 9ADA      SBI	0x1B,2
    0007E C001      RJMP	0x0080
(0060) 	else
(0061) 		si_port&=~si;
    0007F 98DA      CBI	0x1B,2
(0062) 	sck_port|=sck;				//7
    00080 9AD9      SBI	0x1B,1
(0063) 	sck_port&=~sck;
    00081 98D9      CBI	0x1B,1
(0064) 	for(count=0;count<8;count++)
    00082 2744      CLR	R20
    00083 C009      RJMP	0x008D
(0065) 	{
(0066) 		if(dat&0x80)
    00084 FF27      SBRS	R18,7
    00085 C002      RJMP	0x0088
(0067) 			si_port|=si;
    00086 9ADA      SBI	0x1B,2
    00087 C001      RJMP	0x0089
(0068) 		else
(0069) 			si_port&=~si;
    00088 98DA      CBI	0x1B,2
(0070) 		sck_port|=sck;
    00089 9AD9      SBI	0x1B,1
(0071) 		sck_port&=~sck;
    0008A 98D9      CBI	0x1B,1
(0072) 		dat=dat<<1;
    0008B 0F22      LSL	R18
    0008C 9543      INC	R20
    0008D 3048      CPI	R20,0x8
    0008E F3A8      BCS	0x0084
(0073) 	}
(0074) 	cs_port|=cs;
    0008F 9AD8      SBI	0x1B,0
    00090 9149      LD	R20,Y+
    00091 9508      RET
(0075) }
(0076) 
(0077) void r_init(void)
(0078) {
(0079) 	r_io_init();
_r_init:
    00092 DFBE      RCALL	_r_io_init
(0080) 	write_r(0x11,0x7f);
    00093 E72F      LDI	R18,0x7F
    00094 E101      LDI	R16,0x11
    00095 CFC2      RJMP	_write_r
_set_r:
  buf1                 --> R10
  buf0                 --> Y,+0
  r                    --> R12
    00096 940E 00D5 CALL	push_xgset003C
    00098 0168      MOVW	R12,R16
    00099 9724      SBIW	R28,4
(0081) }
(0082) 
(0083) void set_r(unsigned int r)
(0084) {	
(0085) 	float buf0=0;
    0009A E508      LDI	R16,0x58
    0009B E010      LDI	R17,0
    0009C 940E 00E3 CALL	lpm32
    0009E 8308      ST	Y,R16
    0009F 8319      STD	Y+1,R17
    000A0 832A      STD	Y+2,R18
    000A1 833B      STD	Y+3,R19
(0086) 	unsigned char buf1=0;
(0087) 	buf0=r_full/255;
    000A2 E504      LDI	R16,0x54
    000A3 E010      LDI	R17,0
    000A4 940E 00E3 CALL	lpm32
    000A6 8308      ST	Y,R16
    000A7 8319      STD	Y+1,R17
    000A8 832A      STD	Y+2,R18
    000A9 833B      STD	Y+3,R19
(0088) 	buf0=r/buf0;
    000AA 0186      MOVW	R16,R12
    000AB 940E 0129 CALL	uint2fp
    000AD 01CE      MOVW	R24,R28
    000AE 939A      ST	-Y,R25
    000AF 938A      ST	-Y,R24
    000B0 940E 014D CALL	fpdiv1
    000B2 8308      ST	Y,R16
    000B3 8319      STD	Y+1,R17
    000B4 832A      STD	Y+2,R18
    000B5 833B      STD	Y+3,R19
(0089) 	buf1=(unsigned char)buf0;
    000B6 8108      LD	R16,Y
    000B7 8119      LDD	R17,Y+1
    000B8 812A      LDD	R18,Y+2
    000B9 813B      LDD	R19,Y+3
    000BA 940E 00F7 CALL	fpint
    000BC 2EA0      MOV	R10,R16
(0090) 	write_r(0x11,buf1);
    000BD 2D2A      MOV	R18,R10
    000BE E101      LDI	R16,0x11
    000BF DF98      RCALL	_write_r
    000C0 9624      ADIW	R28,4
    000C1 940C 00CA JMP	pop_xgset003C
(0091) }
(0092) 
(0093) 
(0094) 
(0095) 
(0096) 
(0097) 
(0098) 
(0099) 
(0100) 
(0101) 
(0102) 
(0103) //main.c
(0104) 
(0105) 
(0106) void main(void)
(0107) {
(0108) 	r_init();
_main:
    000C3 DFCE      RCALL	_r_init
    000C4 C003      RJMP	0x00C8
(0109) 	while(1)
(0110) 	{
(0111) 		set_r(5900);
FILE: <library>
    000C5 E00C      LDI	R16,0xC
    000C6 E117      LDI	R17,0x17
    000C7 DFCE      RCALL	_set_r
    000C8 CFFC      RJMP	0x00C5
    000C9 9508      RET
pop_xgset003C:
    000CA 90A9      LD	R10,Y+
    000CB 90B9      LD	R11,Y+
    000CC 90C9      LD	R12,Y+
    000CD 90D9      LD	R13,Y+
    000CE 9508      RET
push_xgsetF0FC:
    000CF 937A      ST	-Y,R23
    000D0 936A      ST	-Y,R22
push_xgset30FC:
    000D1 935A      ST	-Y,R21
    000D2 934A      ST	-Y,R20
push_xgset00FC:
    000D3 92FA      ST	-Y,R15
    000D4 92EA      ST	-Y,R14
push_xgset003C:
    000D5 92DA      ST	-Y,R13
    000D6 92CA      ST	-Y,R12
    000D7 92BA      ST	-Y,R11
    000D8 92AA      ST	-Y,R10
    000D9 9508      RET
neg32:
    000DA 9500      COM	R16
    000DB 9510      COM	R17
    000DC 9520      COM	R18
    000DD 9530      COM	R19
    000DE 5F0F      SUBI	R16,0xFF
    000DF 4F1F      SBCI	R17,0xFF
    000E0 4F2F      SBCI	R18,0xFF
    000E1 4F3F      SBCI	R19,0xFF
    000E2 9508      RET
lpm32:
    000E3 93EA      ST	-Y,R30
    000E4 93FA      ST	-Y,R31
    000E5 920A      ST	-Y,R0
    000E6 2FE0      MOV	R30,R16
    000E7 2FF1      MOV	R31,R17
    000E8 95C8      LPM
    000E9 2D00      MOV	R16,R0
    000EA 9631      ADIW	R30,1
    000EB 95C8      LPM
    000EC 2D10      MOV	R17,R0
    000ED 9631      ADIW	R30,1
    000EE 95C8      LPM
    000EF 2D20      MOV	R18,R0
    000F0 9631      ADIW	R30,1
    000F1 95C8      LPM
    000F2 2D30      MOV	R19,R0
    000F3 9009      LD	R0,Y+
    000F4 91F9      LD	R31,Y+
    000F5 91E9      LD	R30,Y+
    000F6 9508      RET
fpint:
    000F7 924A      ST	-Y,R4
    000F8 925A      ST	-Y,R5
    000F9 926A      ST	-Y,R6
    000FA 938A      ST	-Y,R24
    000FB 940E 01F7 CALL	unpacku
    000FD F111      BEQ	0x0120
    000FE 2055      TST	R5
    000FF F0E2      BMI	0x011C
    00100 E18F      LDI	R24,0x1F
    00101 1648      CP	R4,R24
    00102 F4C0      BCC	0x011B
    00103 E187      LDI	R24,0x17
    00104 1648      CP	R4,R24
    00105 F0D1      BEQ	0x0120
    00106 F458      BCC	0x0112
    00107 9441      NEG	R4
    00108 EE89      LDI	R24,0xE9
    00109 1A48      SUB	R4,R24
    0010A C005      RJMP	0x0110
    0010B 9535      ASR	R19
    0010C 9527      ROR	R18
    0010D 9517      ROR	R17
    0010E 9507      ROR	R16
    0010F 944A      DEC	R4
    00110 F7D1      BNE	0x010B
    00111 C00E      RJMP	0x0120
    00112 E187      LDI	R24,0x17

⌨️ 快捷键说明

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