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

📄 getpower_m8.lst

📁 感应取电的控制
💻 LST
📖 第 1 页 / 共 2 页
字号:
__text_start:
__start:
    0014 E5CF      LDI	R28,0x5F
    0015 E0D4      LDI	R29,4
    0016 BFCD      OUT	0x3D,R28
    0017 BFDE      OUT	0x3E,R29
    0018 51C0      SUBI	R28,0x10
    0019 40D0      SBCI	R29,0
    001A EA0A      LDI	R16,0xAA
    001B 8308      STD	Y+0,R16
    001C 2400      CLR	R0
    001D E6E2      LDI	R30,0x62
    001E E0F0      LDI	R31,0
    001F E010      LDI	R17,0
    0020 36E8      CPI	R30,0x68
    0021 07F1      CPC	R31,R17
    0022 F011      BEQ	0x0025
    0023 9201      ST	R0,Z+
    0024 CFFB      RJMP	0x0020
    0025 8300      STD	Z+0,R16
    0026 E2E6      LDI	R30,0x26
    0027 E0F0      LDI	R31,0
    0028 E6A0      LDI	R26,0x60
    0029 E0B0      LDI	R27,0
    002A E010      LDI	R17,0
    002B 32E8      CPI	R30,0x28
    002C 07F1      CPC	R31,R17
    002D F021      BEQ	0x0032
    002E 95C8      LPM
    002F 9631      ADIW	R30,1
    0030 920D      ST	R0,X+
    0031 CFF9      RJMP	0x002B
    0032 D11B      RCALL	_main
_exit:
    0033 CFFF      RJMP	_exit
FILE: E:\GetPower_M8_source\GetPower_M8.c
(0001) 
(0002) //	
(0003) /***********************************************************************************
(0004) Project:          GetPower program (V0.6)
(0005) Filename:         GetPower.c    
(0006) Prozessor:        Mega8 family
(0007) Compiler:         ICCAVR Version 6.14
(0008) Autor:              Dou
(0009) Copyrigth:        (c) Sensirion AG      
(0010) ***********************************************************************************/
(0011) /////////////////////////////////////////////////////////////
(0012) /*
(0013) 	烟台国网中电自动化技术有限公司
(0014) 	雷击模块程序(ICCAVR)
(0015) 	作者:窦庚欣
(0016) 
(0017) 
(0018) */
(0019) #include<iom8v.h>
(0020) #include <math.h>
(0021) #include<macros.h>
(0022) #include<eeprom.h>
(0023) #include<string.h>
(0024) #include<stdio.h>
(0025) 
(0026) 
(0027) 
(0028) 
(0029) typedef unsigned char	BOOLEAN;
(0030) typedef unsigned char	INT8U;
(0031) typedef signed char		INT8S;
(0032) typedef unsigned int	INT16U;
(0033) typedef signed int		INT16S;
(0034) typedef unsigned long	INT32U;
(0035) typedef signed long		INT32S;
(0036) 
(0037) #define BIT_H(x)	(1<<x)
(0038) #define BIT_L(x)	(~(1<<x))
(0039) 
(0040) #define	LED_H	(PORTD |= BIT_H(PD3))
(0041) #define	LED_L	(PORTD &= BIT_L(PD3))
(0042) 
(0043) 
(0044) #define fosc		7372800
(0045) #define baud		115200
(0046) 
(0047) #define MS_COUNT	fosc/1000/17		//延时计数
(0048) #define SR_NOP()	asm("nop")			//空指令
(0049) 
(0050) 
(0051) 
(0052) #define	BYTE	unsigned char
(0053) #define	WORD	unsigned int
(0054) 
(0055) 
(0056) volatile 	static 	WORD	adc_val;		//AD最终结果
(0057) volatile    static      int	Power_Low;    //电压低标志
(0058) static	WORD	adc_first;		//第1次AD标志
(0059) 
(0060) 
(0061) 
(0062) 
(0063) 
(0064) void (*reset)(void)=0x0000; 	
(0065) 
(0066) /////////////////////////////////////////////////////////////////////////////////
(0067) 
(0068) void delay(WORD n)
(0069) {
(0070)     while(--n){;}
_delay:
  n                    --> R16
    0034 01C8      MOVW	R24,R16
    0035 9701      SBIW	R24,1
    0036 018C      MOVW	R16,R24
    0037 3000      CPI	R16,0
    0038 0701      CPC	R16,R17
    0039 F7D1      BNE	0x0034
    003A 9508      RET
_sr_ms:
  i                    --> R10
  j                    --> R12
  n                    --> R16
    003B D14D      RCALL	push_gset4
(0071) }
(0072) //延时n毫秒
(0073) void sr_ms(WORD n)
(0074) {	//延时n毫秒
(0075) 	WORD i,j;
(0076) 
(0077) 	for(i=0; i<n; i++)
    003C 24AA      CLR	R10
    003D 24BB      CLR	R11
    003E C015      RJMP	0x0054
(0078) 		for(j=0; j<MS_COUNT;j++);
    003F 24CC      CLR	R12
    0040 24DD      CLR	R13
    0041 C003      RJMP	0x0045
    0042 01C6      MOVW	R24,R12
    0043 9601      ADIW	R24,1
    0044 016C      MOVW	R12,R24
    0045 EB41      LDI	R20,0xB1
    0046 E051      LDI	R21,1
    0047 E060      LDI	R22,0
    0048 E070      LDI	R23,0
    0049 0116      MOVW	R2,R12
    004A 2444      CLR	R4
    004B 2455      CLR	R5
    004C 1624      CP	R2,R20
    004D 0635      CPC	R3,R21
    004E 0646      CPC	R4,R22
    004F 0657      CPC	R5,R23
    0050 F38C      BLT	0x0042
    0051 01C5      MOVW	R24,R10
    0052 9601      ADIW	R24,1
    0053 015C      MOVW	R10,R24
    0054 16A0      CP	R10,R16
    0055 06B1      CPC	R11,R17
    0056 F340      BCS	0x003F
    0057 D12D      RCALL	pop_gset4
    0058 9508      RET
_quarter_ms:
  i                    --> R10
  j                    --> R12
  n                    --> R16
    0059 D12F      RCALL	push_gset4
(0079) }
(0080) 
(0081) /////////////////////////////////////////////////////////////
(0082) void quarter_ms(WORD n)
(0083) {	//延时n毫秒
(0084) 	WORD i,j;
(0085) 
(0086) 	for(i=0; i<n; i++)
    005A 24AA      CLR	R10
    005B 24BB      CLR	R11
    005C C015      RJMP	0x0072
(0087) 		for(j=0; j<MS_COUNT/4;j++);
    005D 24CC      CLR	R12
    005E 24DD      CLR	R13
    005F C003      RJMP	0x0063
    0060 01C6      MOVW	R24,R12
    0061 9601      ADIW	R24,1
    0062 016C      MOVW	R12,R24
    0063 E64C      LDI	R20,0x6C
    0064 E050      LDI	R21,0
    0065 E060      LDI	R22,0
    0066 E070      LDI	R23,0
    0067 0116      MOVW	R2,R12
    0068 2444      CLR	R4
    0069 2455      CLR	R5
    006A 1624      CP	R2,R20
    006B 0635      CPC	R3,R21
    006C 0646      CPC	R4,R22
    006D 0657      CPC	R5,R23
    006E F38C      BLT	0x0060
    006F 01C5      MOVW	R24,R10
    0070 9601      ADIW	R24,1
    0071 015C      MOVW	R10,R24
    0072 16A0      CP	R10,R16
    0073 06B1      CPC	R11,R17
    0074 F340      BCS	0x005D
    0075 D10F      RCALL	pop_gset4
    0076 9508      RET
_half_ms:
  i                    --> R10
  j                    --> R12
  n                    --> R16
    0077 D111      RCALL	push_gset4
(0088) }
(0089) 
(0090) /////////////////////////////////////////////////////////////
(0091) void half_ms(WORD n)
(0092) {	//延时n毫秒
(0093) 	WORD i,j;
(0094) 
(0095) 	for(i=0; i<n; i++)
    0078 24AA      CLR	R10
    0079 24BB      CLR	R11
    007A C015      RJMP	0x0090
(0096) 		for(j=0; j<MS_COUNT/2;j++);
    007B 24CC      CLR	R12
    007C 24DD      CLR	R13
    007D C003      RJMP	0x0081
    007E 01C6      MOVW	R24,R12
    007F 9601      ADIW	R24,1
    0080 016C      MOVW	R12,R24
    0081 ED48      LDI	R20,0xD8
    0082 E050      LDI	R21,0
    0083 E060      LDI	R22,0
    0084 E070      LDI	R23,0
    0085 0116      MOVW	R2,R12
    0086 2444      CLR	R4
    0087 2455      CLR	R5
    0088 1624      CP	R2,R20
    0089 0635      CPC	R3,R21
    008A 0646      CPC	R4,R22
    008B 0657      CPC	R5,R23
    008C F38C      BLT	0x007E
    008D 01C5      MOVW	R24,R10
    008E 9601      ADIW	R24,1
    008F 015C      MOVW	R10,R24
    0090 16A0      CP	R10,R16
    0091 06B1      CPC	R11,R17
    0092 F340      BCS	0x007B
    0093 D0F1      RCALL	pop_gset4
    0094 9508      RET
_ms:
  i                    --> R10
  j                    --> R12
  n                    --> R16
    0095 D0F3      RCALL	push_gset4
(0097) }
(0098) 
(0099) void ms(WORD n)
(0100) {	//延时n毫秒
(0101) 	WORD i,j;
(0102) 
(0103) 	for(i=0; i<n; i++){WDR();
    0096 24AA      CLR	R10
    0097 24BB      CLR	R11
    0098 C016      RJMP	0x00AF
    0099 95A8      WDR
(0104) 		for(j=0; j<MS_COUNT;j++);}
    009A 24CC      CLR	R12
    009B 24DD      CLR	R13
    009C C003      RJMP	0x00A0
    009D 01C6      MOVW	R24,R12
    009E 9601      ADIW	R24,1
    009F 016C      MOVW	R12,R24
    00A0 EB41      LDI	R20,0xB1
    00A1 E051      LDI	R21,1
    00A2 E060      LDI	R22,0
    00A3 E070      LDI	R23,0
    00A4 0116      MOVW	R2,R12
    00A5 2444      CLR	R4
    00A6 2455      CLR	R5
    00A7 1624      CP	R2,R20
    00A8 0635      CPC	R3,R21
    00A9 0646      CPC	R4,R22
    00AA 0657      CPC	R5,R23
    00AB F38C      BLT	0x009D
    00AC 01C5      MOVW	R24,R10
    00AD 9601      ADIW	R24,1
    00AE 015C      MOVW	R10,R24
    00AF 16A0      CP	R10,R16
    00B0 06B1      CPC	R11,R17
    00B1 F338      BCS	0x0099
    00B2 D0D2      RCALL	pop_gset4
    00B3 9508      RET
_us:
  i                    --> R10
  j                    --> R12
  n                    --> R16
    00B4 D0D4      RCALL	push_gset4
(0105) }
(0106) 
(0107) void us(WORD n)
(0108) {	//延时n毫秒
(0109) 	WORD i,j;
(0110) 
(0111) 	for(i=0; i<n; i++)
    00B5 24AA      CLR	R10
    00B6 24BB      CLR	R11
    00B7 C015      RJMP	0x00CD
(0112) 		for(j=0; j<MS_COUNT/1000;j++);
    00B8 24CC      CLR	R12
    00B9 24DD      CLR	R13
    00BA C003      RJMP	0x00BE
    00BB 01C6      MOVW	R24,R12
    00BC 9601      ADIW	R24,1
    00BD 016C      MOVW	R12,R24
    00BE E040      LDI	R20,0
    00BF E050      LDI	R21,0
    00C0 E060      LDI	R22,0
    00C1 E070      LDI	R23,0
    00C2 0116      MOVW	R2,R12
    00C3 2444      CLR	R4
    00C4 2455      CLR	R5
    00C5 1624      CP	R2,R20
    00C6 0635      CPC	R3,R21
    00C7 0646      CPC	R4,R22
    00C8 0657      CPC	R5,R23
    00C9 F38C      BLT	0x00BB
    00CA 01C5      MOVW	R24,R10
    00CB 9601      ADIW	R24,1
    00CC 015C      MOVW	R10,R24
    00CD 16A0      CP	R10,R16
    00CE 06B1      CPC	R11,R17
    00CF F340      BCS	0x00B8
    00D0 D0B4      RCALL	pop_gset4
    00D1 9508      RET
_delay_s:
  i                    --> R20
  n                    --> R22
    00D2 D0BA      RCALL	push_gset2
    00D3 01B8      MOVW	R22,R16
(0113) }
(0114) 
(0115) /////////////////////////////////////////////////////////////
(0116) void delay_s(WORD n)
(0117) {
(0118) 	WORD	i;
(0119) 	for ( i=0; i<10*n; i++ )	ms(100);
    00D4 2744      CLR	R20
    00D5 2755      CLR	R21
    00D6 C005      RJMP	0x00DC

⌨️ 快捷键说明

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