📄 getpower_m8.lis
字号:
.module GetPower_M8.c
.area data(ram, con, rel)
0000 _reset::
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile E:\GetPower_M8_source\GetPower_M8.c
0002 .dbsym e reset _reset pfV
.area text(rom, con, rel)
0000 .dbfile E:\GetPower_M8_source\GetPower_M8.c
0000 .dbfunc e delay _delay fV
0000 ; n -> R16,R17
.even
0000 _delay::
0000 .dbline -1
0000 .dbline 69
0000 ;
0000 ; //
0000 ; /***********************************************************************************
0000 ; Project: GetPower program (V0.6)
0000 ; Filename: GetPower.c
0000 ; Prozessor: Mega8 family
0000 ; Compiler: ICCAVR Version 6.14
0000 ; Autor: Dou
0000 ; Copyrigth: (c) Sensirion AG
0000 ; ***********************************************************************************/
0000 ; /////////////////////////////////////////////////////////////
0000 ; /*
0000 ; 烟台国网中电自动化技术有限公司
0000 ; 雷击模块程序(ICCAVR)
0000 ; 作者:窦庚欣
0000 ;
0000 ;
0000 ; */
0000 ; #include<iom8v.h>
0000 ; #include <math.h>
0000 ; #include<macros.h>
0000 ; #include<eeprom.h>
0000 ; #include<string.h>
0000 ; #include<stdio.h>
0000 ;
0000 ;
0000 ;
0000 ;
0000 ; typedef unsigned char BOOLEAN;
0000 ; typedef unsigned char INT8U;
0000 ; typedef signed char INT8S;
0000 ; typedef unsigned int INT16U;
0000 ; typedef signed int INT16S;
0000 ; typedef unsigned long INT32U;
0000 ; typedef signed long INT32S;
0000 ;
0000 ; #define BIT_H(x) (1<<x)
0000 ; #define BIT_L(x) (~(1<<x))
0000 ;
0000 ; #define LED_H (PORTD |= BIT_H(PD3))
0000 ; #define LED_L (PORTD &= BIT_L(PD3))
0000 ;
0000 ;
0000 ; #define fosc 7372800
0000 ; #define baud 115200
0000 ;
0000 ; #define MS_COUNT fosc/1000/17 //延时计数
0000 ; #define SR_NOP() asm("nop") //空指令
0000 ;
0000 ;
0000 ;
0000 ; #define BYTE unsigned char
0000 ; #define WORD unsigned int
0000 ;
0000 ;
0000 ; volatile static WORD adc_val; //AD最终结果
0000 ; volatile static int Power_Low; //电压低标志
0000 ; static WORD adc_first; //第1次AD标志
0000 ;
0000 ;
0000 ;
0000 ;
0000 ;
0000 ; void (*reset)(void)=0x0000;
0000 ;
0000 ; /////////////////////////////////////////////////////////////////////////////////
0000 ;
0000 ; void delay(WORD n)
0000 ; {
0000 L2:
0000 .dbline 70
0000 .dbline 70
0000 .dbline 70
0000 L3:
0000 .dbline 70
0000 ; while(--n){;}
0000 C801 movw R24,R16
0002 0197 sbiw R24,1
0004 8C01 movw R16,R24
0006 0030 cpi R16,0
0008 0107 cpc R16,R17
000A D1F7 brne L2
000C X0:
000C .dbline -2
000C L1:
000C .dbline 0 ; func end
000C 0895 ret
000E .dbsym r n 16 i
000E .dbend
000E .dbfunc e sr_ms _sr_ms fV
000E ; i -> R10,R11
000E ; j -> R12,R13
000E ; n -> R16,R17
.even
000E _sr_ms::
000E 00D0 rcall push_gset4
0010 .dbline -1
0010 .dbline 74
0010 ; }
0010 ; //延时n毫秒
0010 ; void sr_ms(WORD n)
0010 ; { //延时n毫秒
0010 .dbline 77
0010 ; WORD i,j;
0010 ;
0010 ; for(i=0; i<n; i++)
0010 AA24 clr R10
0012 BB24 clr R11
0014 15C0 rjmp L9
0016 L6:
0016 .dbline 78
0016 CC24 clr R12
0018 DD24 clr R13
001A 03C0 rjmp L13
001C L10:
001C .dbline 78
001C L11:
001C .dbline 78
001C C601 movw R24,R12
001E 0196 adiw R24,1
0020 6C01 movw R12,R24
0022 L13:
0022 .dbline 78
0022 41EB ldi R20,177
0024 51E0 ldi R21,1
0026 60E0 ldi R22,0
0028 70E0 ldi R23,0
002A 1601 movw R2,R12
002C 4424 clr R4
002E 5524 clr R5
0030 2416 cp R2,R20
0032 3506 cpc R3,R21
0034 4606 cpc R4,R22
0036 5706 cpc R5,R23
0038 8CF3 brlt L10
003A L7:
003A .dbline 77
003A C501 movw R24,R10
003C 0196 adiw R24,1
003E 5C01 movw R10,R24
0040 L9:
0040 .dbline 77
0040 A016 cp R10,R16
0042 B106 cpc R11,R17
0044 40F3 brlo L6
0046 .dbline -2
0046 L5:
0046 00D0 rcall pop_gset4
0048 .dbline 0 ; func end
0048 0895 ret
004A .dbsym r i 10 i
004A .dbsym r j 12 i
004A .dbsym r n 16 i
004A .dbend
004A .dbfunc e quarter_ms _quarter_ms fV
004A ; i -> R10,R11
004A ; j -> R12,R13
004A ; n -> R16,R17
.even
004A _quarter_ms::
004A 00D0 rcall push_gset4
004C .dbline -1
004C .dbline 83
004C ; for(j=0; j<MS_COUNT;j++);
004C ; }
004C ;
004C ; /////////////////////////////////////////////////////////////
004C ; void quarter_ms(WORD n)
004C ; { //延时n毫秒
004C .dbline 86
004C ; WORD i,j;
004C ;
004C ; for(i=0; i<n; i++)
004C AA24 clr R10
004E BB24 clr R11
0050 15C0 rjmp L18
0052 L15:
0052 .dbline 87
0052 CC24 clr R12
0054 DD24 clr R13
0056 03C0 rjmp L22
0058 L19:
0058 .dbline 87
0058 L20:
0058 .dbline 87
0058 C601 movw R24,R12
005A 0196 adiw R24,1
005C 6C01 movw R12,R24
005E L22:
005E .dbline 87
005E 4CE6 ldi R20,108
0060 50E0 ldi R21,0
0062 60E0 ldi R22,0
0064 70E0 ldi R23,0
0066 1601 movw R2,R12
0068 4424 clr R4
006A 5524 clr R5
006C 2416 cp R2,R20
006E 3506 cpc R3,R21
0070 4606 cpc R4,R22
0072 5706 cpc R5,R23
0074 8CF3 brlt L19
0076 L16:
0076 .dbline 86
0076 C501 movw R24,R10
0078 0196 adiw R24,1
007A 5C01 movw R10,R24
007C L18:
007C .dbline 86
007C A016 cp R10,R16
007E B106 cpc R11,R17
0080 40F3 brlo L15
0082 .dbline -2
0082 L14:
0082 00D0 rcall pop_gset4
0084 .dbline 0 ; func end
0084 0895 ret
0086 .dbsym r i 10 i
0086 .dbsym r j 12 i
0086 .dbsym r n 16 i
0086 .dbend
0086 .dbfunc e half_ms _half_ms fV
0086 ; i -> R10,R11
0086 ; j -> R12,R13
0086 ; n -> R16,R17
.even
0086 _half_ms::
0086 00D0 rcall push_gset4
0088 .dbline -1
0088 .dbline 92
0088 ; for(j=0; j<MS_COUNT/4;j++);
0088 ; }
0088 ;
0088 ; /////////////////////////////////////////////////////////////
0088 ; void half_ms(WORD n)
0088 ; { //延时n毫秒
0088 .dbline 95
0088 ; WORD i,j;
0088 ;
0088 ; for(i=0; i<n; i++)
0088 AA24 clr R10
008A BB24 clr R11
008C 15C0 rjmp L27
008E L24:
008E .dbline 96
008E CC24 clr R12
0090 DD24 clr R13
0092 03C0 rjmp L31
0094 L28:
0094 .dbline 96
0094 L29:
0094 .dbline 96
0094 C601 movw R24,R12
0096 0196 adiw R24,1
0098 6C01 movw R12,R24
009A L31:
009A .dbline 96
009A 48ED ldi R20,216
009C 50E0 ldi R21,0
009E 60E0 ldi R22,0
00A0 70E0 ldi R23,0
00A2 1601 movw R2,R12
00A4 4424 clr R4
00A6 5524 clr R5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -