📄 251.lis
字号:
.module _251.c
.area text(rom, con, rel)
0000 .dbfile D:\prog251/spi.h
0000 .dbfunc e SPIOutput _SPIOutput fV
0000 ; data -> R16
.even
0000 _SPIOutput::
0000 .dbline -1
0000 .dbline 6
0000 ; //ICC-AVR application builder : 2008-7-3 10:08:15
0000 ; // Target : M8
0000 ; // Crystal: 4.0000Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 .dbline 7
0000 ; #include "spi.h"
0000 0FB9 out 0xf,R16
0002 L2:
0002 .dbline 8
0002 L3:
0002 .dbline 8
0002 ; #include "lcd.h"
0002 779B sbis 0xe,7
0004 FECF rjmp L2
0006 .dbline -2
0006 L1:
0006 .dbline 0 ; func end
0006 0895 ret
0008 .dbsym r data 16 c
0008 .dbend
.area data(ram, con, rel)
0000 .dbfile D:\prog251/spi.h
0000 _lcdshow::
0000 .blkb 2
.area idata
0000 FBB0 .byte 251,176
.area data(ram, con, rel)
0002 .dbfile D:\prog251/spi.h
0002 .blkb 2
.area idata
0002 EDFC .byte 237,252
.area data(ram, con, rel)
0004 .dbfile D:\prog251/spi.h
0004 .blkb 2
.area idata
0004 B6DE .byte 182,222
.area data(ram, con, rel)
0006 .dbfile D:\prog251/spi.h
0006 .blkb 2
.area idata
0006 DFF2 .byte 223,242
.area data(ram, con, rel)
0008 .dbfile D:\prog251/spi.h
0008 .blkb 2
.area idata
0008 7FFE .byte 127,254
.area data(ram, con, rel)
000A .dbfile D:\prog251/spi.h
000A .blkb 1
.area idata
000A 00 .byte 0
.area data(ram, con, rel)
000B .dbfile D:\prog251/spi.h
000B .dbfile D:\prog251/lcd.h
000B .dbsym e lcdshow _lcdshow A[11:11]c
.area text(rom, con, rel)
0008 .dbfile D:\prog251/lcd.h
0008 .dbfunc e delay _delay fV
.even
0008 _delay::
0008 .dbline -1
0008 .dbline 31
0008 ; #include "EEPROM.h"
0008 ;
0008 ; #define uchar unsigned char
0008 ; #define unint unsigned int
0008 ;
0008 ; //Global
0008 ; #define MaxAngle 2880
0008 ; #define RefreshFreq 10
0008 ; #define ClockwiseMotor 0x80 //00000001
0008 ;
0008 ; //Speed
0008 ; #define SpeedAvgSamples 4
0008 ; #define MaxSpeed 140
0008 ; #define PoleNum 16
0008 ; #define Timer1Unit 2e-6
0008 ; #define Timer1UnitMaxSpeed 202
0008 ;
0008 ; //N
0008 ; #define NAvgSamples 4
0008 ; #define MaxN 4000
0008 ; #define PulseFreqper100Rpm 30
0008 ; #define MaxNPulse (MaxN*PulseFreqper100Rpm/100/RefreshFreq) //1200Hz=120Pulses
0008 ;
0008 .dbline 32
0008 ; //Small meter
0008 0000 nop
000A .dbline 33
000A ; #define VoltageMotorBias 2 //AD0<-->MOTOR_BIT(2);
000A 0000 nop
000C .dbline 34
000C ; #define VoltageAvgSamples 4
000C 0000 nop
000E .dbline 35
000E ;
000E 0000 nop
0010 .dbline 36
0010 ;
0010 0000 nop
0012 .dbline -2
0012 L5:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbend
0014 .dbfunc e send _send fV
0014 ; temp -> R20
0014 ; n -> R22
0014 ; sdata -> R10
.even
0014 _send::
0014 00D0 rcall push_gset3
0016 622F mov R22,R18
0018 A02E mov R10,R16
001A .dbline -1
001A .dbline 40
001A ;
001A ; void motor(void);
001A ; void Calculate(void);
001A ; void MileageSaving(void);
001A .dbline 42
001A ; void MileageLoding(void);
001A ; void Parallel(void);
001A 0CC0 rjmp L10
001C L7:
001C .dbline 43
001C ;
001C .dbline 44
001C ; void LCDDecoding(void);
001C 4A2D mov R20,R10
001E 4078 andi R20,128
0020 .dbline 45
0020 ; void ParallelOutput(void);
0020 11F0 breq L11
0022 .dbline 46
0022 ; void KeyMileageCurrentClear(void);
0022 919A sbi 0x12,1
0024 01C0 rjmp L12
0026 L11:
0026 .dbline 48
0026 ; void AlarmCalculate(void);
0026 ;
0026 9198 cbi 0x12,1
0028 L12:
0028 .dbline 49
0028 9098 cbi 0x12,0
002A .dbline 50
002A EEDF rcall _delay
002C .dbline 51
002C 909A sbi 0x12,0
002E .dbline 52
002E ECDF rcall _delay
0030 .dbline 54
0030 AA0C lsl R10
0032 .dbline 55
0032 L8:
0032 .dbline 42
0032 6A95 dec R22
0034 L10:
0034 .dbline 42
0034 2224 clr R2
0036 2616 cp R2,R22
0038 88F3 brlo L7
003A .dbline -2
003A L6:
003A 00D0 rcall pop_gset3
003C .dbline 0 ; func end
003C 0895 ret
003E .dbsym r temp 20 c
003E .dbsym r n 22 c
003E .dbsym r sdata 10 c
003E .dbend
003E .dbfunc e init_lcd _init_lcd fV
.even
003E _init_lcd::
003E .dbline -1
003E .dbline 59
003E ; //GLOBAL VARIABLES
003E ; //SIGNALS
003E ; uchar MotorBlocked = 0;
003E ; uchar CalculateBlocked = 0;
003E ; uchar ParallelBlocked = 0;
003E ; uchar Timer0Div = 0;
003E ; uchar MileageSaveBlocked = 1;
003E ;
003E ; //For speed calculation
003E ; uchar TimeIntervalRefreshed = 0;
003E ; uchar SpeedUltraLow = 1;
003E .dbline 60
003E ; unsigned long int TimeInterval = 100000*5;
003E C198 cbi 0x18,1
0040 .dbline 61
0040 ; unsigned long int TimeIntervalAvg = 100000*5;
0040 23E0 ldi R18,3
0042 00E8 ldi R16,128
0044 E7DF rcall _send
0046 .dbline 62
0046 ; //For N calculation
0046 29E0 ldi R18,9
0048 01E0 ldi R16,1
004A E4DF rcall _send
004C .dbline 63
004C ; unint NPulseCnt = 0;
004C 29E0 ldi R18,9
004E 03E0 ldi R16,3
0050 E1DF rcall _send
0052 .dbline 64
0052 ; unint NPulse = 0;
0052 29E0 ldi R18,9
0054 09E2 ldi R16,41
0056 DEDF rcall _send
0058 .dbline 66
0058 ; unint NPulseAvg = 0;
0058 ;
0058 C19A sbi 0x18,1
005A .dbline 67
005A ; //Small meters
005A 909A sbi 0x12,0
005C .dbline -2
005C L13:
005C .dbline 0 ; func end
005C 0895 ret
005E .dbend
005E .dbfunc e lcd_display _lcd_display fV
005E ; showdata -> R20
005E ; m -> R22
005E ; p -> R10,R11
005E ; lcdshow -> R12,R13
.even
005E _lcd_display::
005E 00D0 rcall push_gset4
0060 5901 movw R10,R18
0062 6801 movw R12,R16
0064 6885 ldd R22,y+8
0066 .dbline -1
0066 .dbline 71
0066 ; uchar ADCCurrentChannel = 0;
0066 ; unint Voltage[6]={0,0,0,0,0,0};
0066 ; unint VoltageAvg[6]={0,0,0,0,0,0};
0066 ; uchar VoltageRefreshed[6]={0,0,0,0,0,0};
0066 .dbline 73
0066 ; #include "251SmallMeterDataTable.h"
0066 ;
0066 C198 cbi 0x18,1
0068 .dbline 74
0068 ; //Mileage
0068 29E0 ldi R18,9
006A 00EA ldi R16,160
006C D3DF rcall _send
006E .dbline 75
006E ; unsigned long int mileage = 0,MileageCurrent = 0;
006E 0DC0 rjmp L18
0070 L15:
0070 .dbline 76
0070 .dbline 77
0070 F501 movw R30,R10
0072 E081 ldd R30,z+0
0074 FF27 clr R31
0076 EC0D add R30,R12
0078 FD1D adc R31,R13
007A 4081 ldd R20,z+0
007C .dbline 78
007C 28E0 ldi R18,8
007E 042F mov R16,R20
0080 C9DF rcall _send
0082 .dbline 79
0082 C501 movw R24,R10
0084 0196 adiw R24,1
0086 5C01 movw R10,R24
0088 .dbline 80
0088 L16:
0088 .dbline 75
0088 6A95 dec R22
008A L18:
008A .dbline 75
008A 2224 clr R2
008C 2616 cp R2,R22
008E 80F3 brlo L15
0090 .dbline 81
0090 ; unint MileagePulseCnt = 0;
0090 ; uchar MileageSaved = 1;
0090 ;
0090 ;
0090 ; //MOTOR POSITION
0090 ; SpeedMotorCurrent = MaxAngle; //for initialize
0090 C19A sbi 0x18,1
0092 .dbline 82
0092 ; SpeedMotorSetting = 0;
0092 909A sbi 0x12,0
0094 .dbline -2
0094 L14:
0094 00D0 rcall pop_gset4
0096 .dbline 0 ; func end
0096 0895 ret
0098 .dbsym r showdata 20 c
0098 .dbsym r m 22 c
0098 .dbsym r p 10 pc
0098 .dbsym r lcdshow 12 pc
0098 .dbend
0098 .dbfile D:\prog251/EEPROM.h
0098 .dbfunc e EEPROM_write _EEPROM_write fV
0098 ; ucData -> R18
0098 ; uiAddress -> R16,R17
.even
0098 _EEPROM_write::
0098 .dbline -1
0098 .dbline 2
0098 L20:
0098 .dbline 5
0098 L21:
0098 .dbline 4
0098 E199 sbic 0x1c,1
009A FECF rjmp L20
009C .dbline 7
009C 1FBB out 0x1f,R17
009E 0EBB out 0x1e,R16
00A0 .dbline 8
00A0 2DBB out 0x1d,R18
00A2 .dbline 10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -