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

📄 ad7705.lst

📁 基于mega128上实现ad7705的驱动程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    039E E070      LDI	R23,0
    039F 01FE      MOVW	R30,R28
    03A0 8C20      LDD	R2,Z+24
    03A1 8C31      LDD	R3,Z+25
    03A2 8C42      LDD	R4,Z+26
    03A3 8C53      LDD	R5,Z+27
    03A4 937A      ST	R23,-Y
    03A5 936A      ST	R22,-Y
    03A6 935A      ST	R21,-Y
    03A7 934A      ST	R20,-Y
    03A8 0181      MOVW	R16,R2
    03A9 0192      MOVW	R18,R4
    03AA 940E04C4  CALL	div32u
    03AC E04A      LDI	R20,0xA
    03AD E050      LDI	R21,0
    03AE E060      LDI	R22,0
    03AF E070      LDI	R23,0
    03B0 937A      ST	R23,-Y
    03B1 936A      ST	R22,-Y
    03B2 935A      ST	R21,-Y
    03B3 934A      ST	R20,-Y
    03B4 940E04C6  CALL	mod32u
    03B6 8708      STD	Y+8,R16
(0190)   a[7]=(t/1)%10;                                         
    03B7 E04A      LDI	R20,0xA
    03B8 E050      LDI	R21,0
    03B9 E060      LDI	R22,0
    03BA E070      LDI	R23,0
    03BB 01FE      MOVW	R30,R28
    03BC 8C20      LDD	R2,Z+24
    03BD 8C31      LDD	R3,Z+25
    03BE 8C42      LDD	R4,Z+26
    03BF 8C53      LDD	R5,Z+27
    03C0 937A      ST	R23,-Y
    03C1 936A      ST	R22,-Y
    03C2 935A      ST	R21,-Y
    03C3 934A      ST	R20,-Y
    03C4 0181      MOVW	R16,R2
    03C5 0192      MOVW	R18,R4
    03C6 940E04C6  CALL	mod32u
    03C8 8709      STD	Y+9,R16
(0191)                                                       
(0192)   for(i=0; i<8; i++)         //转成ASCII码               
    03C9 24EE      CLR	R14
    03CA C00B      RJMP	0x03D6
(0193)     a[i]=a[i]+'0';                                     
    03CB 01CE      MOVW	R24,R28
    03CC 9602      ADIW	R24,2
    03CD 2C2E      MOV	R2,R14
    03CE 2433      CLR	R3
    03CF 0E28      ADD	R2,R24
    03D0 1E39      ADC	R3,R25
    03D1 01F1      MOVW	R30,R2
    03D2 8180      LDD	R24,Z+0
    03D3 5D80      SUBI	R24,0xD0
    03D4 8380      STD	Z+0,R24
    03D5 94E3      INC	R14
    03D6 2D8E      MOV	R24,R14
    03D7 3088      CPI	R24,0x8
    03D8 F390      BCS	0x03CB
(0194)   for(i=0; a[i]=='0' && i<=7; i++);   
    03D9 24EE      CLR	R14
    03DA C001      RJMP	0x03DC
    03DB 94E3      INC	R14
    03DC 01CE      MOVW	R24,R28
    03DD 9602      ADIW	R24,2
    03DE 2DEE      MOV	R30,R14
    03DF 27FF      CLR	R31
    03E0 0FE8      ADD	R30,R24
    03E1 1FF9      ADC	R31,R25
    03E2 8180      LDD	R24,Z+0
    03E3 3380      CPI	R24,0x30
    03E4 F419      BNE	0x03E8
    03E5 E087      LDI	R24,7
    03E6 158E      CP	R24,R14
    03E7 F798      BCC	0x03DB
(0195)     n=8-i;                   
    03E8 E088      LDI	R24,0x8
    03E9 2EA8      MOV	R10,R24
    03EA 18AE      SUB	R10,R14
(0196)   for(j=8-n; j<i; j++)       //填充空格                  
    03EB 198A      SUB	R24,R10
    03EC 2EA8      MOV	R10,R24
    03ED C007      RJMP	0x03F5
(0197)     { *str=' ';  str++; }                              
    03EE E280      LDI	R24,0x20
    03EF 01F6      MOVW	R30,R12
    03F0 8380      STD	Z+0,R24
    03F1 01CF      MOVW	R24,R30
    03F2 9601      ADIW	R24,1
    03F3 016C      MOVW	R12,R24
    03F4 94A3      INC	R10
    03F5 14AE      CP	R10,R14
    03F6 F3B8      BCS	0x03EE
(0198)   for(; i<8; i++)                                        
    03F7 C00D      RJMP	0x0405
(0199)     { *str=(char)a[i]; str++; }  //加入有效的数字            
    03F8 01CE      MOVW	R24,R28
    03F9 9602      ADIW	R24,2
    03FA 2DEE      MOV	R30,R14
    03FB 27FF      CLR	R31
    03FC 0FE8      ADD	R30,R24
    03FD 1FF9      ADC	R31,R25
    03FE 8020      LDD	R2,Z+0
    03FF 01F6      MOVW	R30,R12
    0400 8220      STD	Z+0,R2
    0401 01CF      MOVW	R24,R30
    0402 9601      ADIW	R24,1
    0403 016C      MOVW	R12,R24
    0404 94E3      INC	R14
    0405 2D8E      MOV	R24,R14
    0406 3088      CPI	R24,0x8
    0407 F380      BCS	0x03F8
(0200)   *str='\0'; 
    0408 2422      CLR	R2
    0409 01F6      MOVW	R30,R12
    040A 8220      STD	Z+0,R2
(0201)   LCD_DisplayString(x,y,ch2);
    040B E186      LDI	R24,0x16
    040C E091      LDI	R25,1
    040D 8399      STD	Y+1,R25
    040E 8388      STD	Y+0,R24
    040F 892E      LDD	R18,Y+22
    0410 890C      LDD	R16,Y+20
    0411 DE2B      RCALL	_LCD_DisplayString
    0412 962A      ADIW	R28,0xA
    0413 940E053B  CALL	pop_gset5
    0415 9624      ADIW	R28,4
    0416 9508      RET
_main:
  tongdao              --> R20
  key_vale             --> R22
    0417 9722      SBIW	R28,2
FILE: D:\各种模块设计\模块程序集\ad7705\main.c
(0001) #include <iom128v.h>
(0002) #include<macros.h>
(0003) #include "delay.h"
(0004) #include "7705.h"
(0005) #include "KeyScay.h"
(0006) #include "lcd.h"
(0007) 
(0008) /****************************************************************************/
(0009) //功能: AD7705使用
(0010) //输入: 无
(0011) //输出: 无
(0012) //备注:
(0013) /****************************************************************************/
(0014) /***************************全局变量声明*************************************/
(0015) uint vol16bit=0;
(0016) uchar test1[]=" AD7705TEST ";
(0017) uint vint=0;
(0018) float voltemp=0;
(0019) uchar flag=0;
(0020)  
(0021) //void int0_isr(void);
(0022) /****************************************************************************/
(0023) //函数名:    ad7705()
(0024) //功能:      实现模数转换
(0025) //输入:      chan(通道)
(0026) //输出:      adc16(经ADC转换后的16位2进制数)
(0027) //备注:
(0028) /****************************************************************************/
(0029) //unsigned int ad7705(unsigned char chan)
(0030) //{ unsigned int adc16=0;
(0031)   //init_adc7705();
(0032)   //adc16=read_adc7705(0);
(0033)   //return(adc16);
(0034) //}
(0035) /****************************************************************************/
(0036) //函数名:    main(void)
(0037) //功能:      主函数
(0038) //输入:      无
(0039) //输出:      无
(0040) //备注:
(0041) /****************************************************************************/
(0042) void main(void)
(0043) { 
(0044)   uchar tongdao=0x00;
    0418 2744      CLR	R20
(0045)   uchar key_vale;
(0046)   
(0047)   DDRF=0xF3;   
    0419 EF83      LDI	R24,0xF3
    041A 93800061  STS	0x61,R24
(0048)   PORTF=0xFF;
    041C EF8F      LDI	R24,0xFF
    041D 93800062  STS	0x62,R24
(0049)   DDRD=0xf7;  //PD0为输入,与键盘的所有行线连接,采用键盘中断查询法
    041F EF87      LDI	R24,0xF7
    0420 BB81      OUT	0x11,R24
(0050)   MCUCR=0x30; //打开SE和SM1,允许sleep和power_down模式
    0421 E380      LDI	R24,0x30
    0422 BF85      OUT	0x35,R24
(0051)   EIMSK=0x01;  //允许外部中断INT0,低电平触发中断
    0423 E081      LDI	R24,1
    0424 BF89      OUT	0x39,R24
(0052)   LCD_init();
    0425 DDB3      RCALL	_LCD_init
(0053)   LCD_DisplayString(1,1,test1);
    0426 E082      LDI	R24,2
    0427 E091      LDI	R25,1
    0428 8399      STD	Y+1,R25
    0429 8388      STD	Y+0,R24
    042A E021      LDI	R18,1
    042B E001      LDI	R16,1
    042C DE10      RCALL	_LCD_DisplayString
    042D C063      RJMP	0x0491
(0054)   
(0055)   while(1)
(0056)   { 
(0057)     CLI();
    042E 94F8      BCLR	7
(0058) 	SEI();
    042F 9478      BSET	7
(0059)     asm("sleep"); //进入sleep模式
    0430 9588      SLEEP
(0060) 	
(0061)     if(flag=1)
    0431 E081      LDI	R24,1
    0432 93800115  STS	flag,R24
    0434 2388      TST	R24
    0435 F409      BNE	0x0437
    0436 C05A      RJMP	0x0491
(0062)      {
(0063) 	   key_vale=key_scay();
    0437 DD6F      RCALL	_key_scay
    0438 2F60      MOV	R22,R16
(0064) 	   
(0065) 	   if(key_vale==10)
    0439 300A      CPI	R16,0xA
    043A F009      BEQ	0x043C
    043B C055      RJMP	0x0491
(0066) 	   {
(0067) 	    vol16bit=ad7705(tongdao);
    043C 2F04      MOV	R16,R20
    043D DD0B      RCALL	_ad7705
    043E 93100101  STS	vol16bit+1,R17
    0440 93000100  STS	vol16bit,R16
(0068) 	    voltemp=(vol16bit/65535.0)*2500;
    0442 E904      LDI	R16,0x94
    0443 E010      LDI	R17,0
    0444 940E0566  CALL	lpm32
    0446 933A      ST	R19,-Y
    0447 932A      ST	R18,-Y
    0448 931A      ST	R17,-Y
    0449 930A      ST	R16,-Y
    044A E900      LDI	R16,0x90
    044B E010      LDI	R17,0
    044C 940E0566  CALL	lpm32
    044E 933A      ST	R19,-Y
    044F 932A      ST	R18,-Y
    0450 931A      ST	R17,-Y
    0451 930A      ST	R16,-Y
    0452 91000100  LDS	R16,vol16bit
    0454 91100101  LDS	R17,vol16bit+1
    0456 9516      LSR	R17
    0457 9507      ROR	R16
    0458 940E05C2  CALL	int2fp
    045A 933A      ST	R19,-Y
    045B 932A      ST	R18,-Y
    045C 931A      ST	R17,-Y
    045D 930A      ST	R16,-Y
    045E 940E06E6  CALL	empy32fs
    0460 91000100  LDS	R16,vol16bit
    0462 91100101  LDS	R17,vol16bit+1
    0464 7001      ANDI	R16,1
    0465 7010      ANDI	R17,0
    0466 940E05C2  CALL	int2fp
    0468 933A      ST	R19,-Y
    0469 932A      ST	R18,-Y
    046A 931A      ST	R17,-Y
    046B 930A      ST	R16,-Y
    046C 940E061C  CALL	add32fs
    046E E80C      LDI	R16,0x8C
    046F E010      LDI	R17,0
    0470 940E0566  CALL	lpm32
    0472 933A      ST	R19,-Y
    0473 932A      ST	R18,-Y
    0474 931A      ST	R17,-Y
    0475 930A      ST	R16,-Y
    0476 940E067D  CALL	div32fs
    0478 940E06E9  CALL	empy32f
    047A 93100112  STS	voltemp+1,R17
    047C 93000111  STS	voltemp,R16
    047E 93300114  STS	voltemp+3,R19
    0480 93200113  STS	voltemp+2,R18
(0069) 	    vint=(int)voltemp;
    0482 940E057A  CALL	fp2int
    0484 93100110  STS	vint+1,R17
    0486 9300010F  STS	vint,R16
(0070) 	    LCD_DisplayInt(2,5,vint); 
    0488 0118      MOVW	R2,R16
    0489 8239      STD	Y+1,R3
    048A 8228      STD	Y+0,R2
    048B E025      LDI	R18,5
    048C E002      LDI	R16,2
    048D DDC4      RCALL	_LCD_DisplayInt
(0071) 	    delay_nms(1);
    048E E001      LDI	R16,1
    048F E010      LDI	R17,0
    0490 DC07      RCALL	_delay_nms
    0491 CF9C      RJMP	0x042E
    0492 9622      ADIW	R28,2
    0493 9508      RET
_int0_isr:
    0494 922A      ST	R2,-Y
    0495 938A      ST	R24,-Y
    0496 B62F      IN	R2,0x3F
    0497 922A      ST	R2,-Y
(0072) 		} 
(0073)      }
(0074)   }
(0075)   
(0076) }   
(0077) 
(0078) 
(0079) //功能:键盘中断扫描程序,外部0中断
(0080) #pragma interrupt_handler int0_isr:2  
(0081) void int0_isr(void)
(0082)   {
(0083)     EIMSK=0x00;          //禁止外部中断
    0498 2422      CLR	R2
    0499 BE29      OUT	0x39,R2
(0084)     flag=1;
    049A E081      LDI	R24,1
    049B 93800115  STS	flag,R24
(0085) 	EIMSK=0x01;         //允许外部中断
FILE: <library>
    049D BF89      OUT	0x39,R24
    049E 9029      LD	R2,Y+
    049F BE2F      OUT	0x3F,R2
    04A0 9189      LD	R24,Y+
    04A1 9029      LD	R2,Y+
    04A2 9518      RETI
push_arg4:
    04A3 933A      ST	R19,-Y
    04A4 932A      ST	R18,-Y
push_arg2:
    04A5 931A      ST	R17,-Y
    04A6 930A      ST	R16,-Y
    04A7 9508      RET
mod16u:
    04A8 9468      BSET	6
    04A9 C001      RJMP	xdiv16u
div16u:
    04AA 94E8      BCLR	6
xdiv16u:
    04AB 92EA      ST	R14,-Y
    04AC 92FA      ST	R15,-Y
    04AD 938A      ST	R24,-Y
    04AE 24EE      CLR	R14
    04AF 24FF      CLR	R15
    04B0 E180      LDI	R24,0x10
    04B1 0F00      LSL	R16
    04B2 1F11      ROL	R17
    04B3 1CEE      ROL	R14
    04B4 1CFF      ROL	R15
    04B5 16E2      CP	R14,R18
    04B6 06F3      CPC	R15,R19
    04B7 F018      BCS	0x04BB
    04B8 1AE2      SUB	R14,R18
    04B9 0AF3      SBC	R15,R19
    04BA 9503      INC	R16
    04BB 958A      DEC	R24
    04BC F7A1      BNE	0x04B1
    04BD F416      BRTC	0x04C0
    04BE 2D0E      MOV	R16,R14
    04BF 2D1F      MOV	R17,R15
    04C0 9189      LD	R24,Y+
    04C1 90F9      LD	R15,Y+
    04C2 90E9      LD	R14,Y+
    04C3 9508      RET
div32u:
    04C4 94E8      BCLR	6
    04C5 C001      RJMP	0x04C7
mod32u:
    04C6 9468      BSET	6
    04C7 D02F      RCALL	long_div_prolog
    04C8 24CC      CLR	R12
    04C9 C008      RJMP	0x04D2
div32s:
    04CA 94E8      BCLR	6
    04CB C001      RJMP	0x04CD
mod32s:
    04CC 9468      BSET	6
    04CD D029      RCALL	long_div_prolog
    04CE FD37      SBRC	R19,7
    04CF D053      RCALL	neg_R16_R19
    04D0 FDB7      SBRC	R27,7
    04D1 D05A      RCALL	neg_R24_R27
    04D2 2477      CLR	R7
    04D3 2488      CLR	R8
    04D4 2499      CLR	R9
    04D5 24AA      CLR	R10
    04D6 24BB      CLR	R11
    04D7 D041      RCALL	tst_R16_R19
    04D8 F0C1      BEQ	0x04F1
    04D9 D044      RCALL	tst_R24_R27
    04DA F0B1      BEQ	0x04F1
    04DB E2E8      LDI	R30,0x28
    04DC 0F00      LSL	R16
    04DD 1F11      ROL	R17
    04DE 1F22      ROL	R18

⌨️ 快捷键说明

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