📄 251.s
字号:
.module _251.c
.area text(rom, con, rel)
.dbfile D:\prog251/spi.h
.dbfunc e SPIOutput _SPIOutput fV
; data -> R16
.even
_SPIOutput::
.dbline -1
.dbline 6
; //ICC-AVR application builder : 2008-7-3 10:08:15
; // Target : M8
; // Crystal: 4.0000Mhz
;
; #include <iom8v.h>
; #include <macros.h>
.dbline 7
; #include "spi.h"
out 0xf,R16
L2:
.dbline 8
L3:
.dbline 8
; #include "lcd.h"
sbis 0xe,7
rjmp L2
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r data 16 c
.dbend
.area data(ram, con, rel)
.dbfile D:\prog251/spi.h
_lcdshow::
.blkb 2
.area idata
.byte 251,176
.area data(ram, con, rel)
.dbfile D:\prog251/spi.h
.blkb 2
.area idata
.byte 237,252
.area data(ram, con, rel)
.dbfile D:\prog251/spi.h
.blkb 2
.area idata
.byte 182,222
.area data(ram, con, rel)
.dbfile D:\prog251/spi.h
.blkb 2
.area idata
.byte 223,242
.area data(ram, con, rel)
.dbfile D:\prog251/spi.h
.blkb 2
.area idata
.byte 127,254
.area data(ram, con, rel)
.dbfile D:\prog251/spi.h
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\prog251/spi.h
.dbfile D:\prog251/lcd.h
.dbsym e lcdshow _lcdshow A[11:11]c
.area text(rom, con, rel)
.dbfile D:\prog251/lcd.h
.dbfunc e delay _delay fV
.even
_delay::
.dbline -1
.dbline 31
; #include "EEPROM.h"
;
; #define uchar unsigned char
; #define unint unsigned int
;
; //Global
; #define MaxAngle 2880
; #define RefreshFreq 10
; #define ClockwiseMotor 0x80 //00000001
;
; //Speed
; #define SpeedAvgSamples 4
; #define MaxSpeed 140
; #define PoleNum 16
; #define Timer1Unit 2e-6
; #define Timer1UnitMaxSpeed 202
;
; //N
; #define NAvgSamples 4
; #define MaxN 4000
; #define PulseFreqper100Rpm 30
; #define MaxNPulse (MaxN*PulseFreqper100Rpm/100/RefreshFreq) //1200Hz=120Pulses
;
.dbline 32
; //Small meter
nop
.dbline 33
; #define VoltageMotorBias 2 //AD0<-->MOTOR_BIT(2);
nop
.dbline 34
; #define VoltageAvgSamples 4
nop
.dbline 35
;
nop
.dbline 36
;
nop
.dbline -2
L5:
.dbline 0 ; func end
ret
.dbend
.dbfunc e send _send fV
; temp -> R20
; n -> R22
; sdata -> R10
.even
_send::
rcall push_gset3
mov R22,R18
mov R10,R16
.dbline -1
.dbline 40
;
; void motor(void);
; void Calculate(void);
; void MileageSaving(void);
.dbline 42
; void MileageLoding(void);
; void Parallel(void);
rjmp L10
L7:
.dbline 43
;
.dbline 44
; void LCDDecoding(void);
mov R20,R10
andi R20,128
.dbline 45
; void ParallelOutput(void);
breq L11
.dbline 46
; void KeyMileageCurrentClear(void);
sbi 0x12,1
rjmp L12
L11:
.dbline 48
; void AlarmCalculate(void);
;
cbi 0x12,1
L12:
.dbline 49
cbi 0x12,0
.dbline 50
rcall _delay
.dbline 51
sbi 0x12,0
.dbline 52
rcall _delay
.dbline 54
lsl R10
.dbline 55
L8:
.dbline 42
dec R22
L10:
.dbline 42
clr R2
cp R2,R22
brlo L7
.dbline -2
L6:
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r temp 20 c
.dbsym r n 22 c
.dbsym r sdata 10 c
.dbend
.dbfunc e init_lcd _init_lcd fV
.even
_init_lcd::
.dbline -1
.dbline 59
; //GLOBAL VARIABLES
; //SIGNALS
; uchar MotorBlocked = 0;
; uchar CalculateBlocked = 0;
; uchar ParallelBlocked = 0;
; uchar Timer0Div = 0;
; uchar MileageSaveBlocked = 1;
;
; //For speed calculation
; uchar TimeIntervalRefreshed = 0;
; uchar SpeedUltraLow = 1;
.dbline 60
; unsigned long int TimeInterval = 100000*5;
cbi 0x18,1
.dbline 61
; unsigned long int TimeIntervalAvg = 100000*5;
ldi R18,3
ldi R16,128
rcall _send
.dbline 62
; //For N calculation
ldi R18,9
ldi R16,1
rcall _send
.dbline 63
; unint NPulseCnt = 0;
ldi R18,9
ldi R16,3
rcall _send
.dbline 64
; unint NPulse = 0;
ldi R18,9
ldi R16,41
rcall _send
.dbline 66
; unint NPulseAvg = 0;
;
sbi 0x18,1
.dbline 67
; //Small meters
sbi 0x12,0
.dbline -2
L13:
.dbline 0 ; func end
ret
.dbend
.dbfunc e lcd_display _lcd_display fV
; showdata -> R20
; m -> R22
; p -> R10,R11
; lcdshow -> R12,R13
.even
_lcd_display::
rcall push_gset4
movw R10,R18
movw R12,R16
ldd R22,y+8
.dbline -1
.dbline 71
; uchar ADCCurrentChannel = 0;
; unint Voltage[6]={0,0,0,0,0,0};
; unint VoltageAvg[6]={0,0,0,0,0,0};
; uchar VoltageRefreshed[6]={0,0,0,0,0,0};
.dbline 73
; #include "251SmallMeterDataTable.h"
;
cbi 0x18,1
.dbline 74
; //Mileage
ldi R18,9
ldi R16,160
rcall _send
.dbline 75
; unsigned long int mileage = 0,MileageCurrent = 0;
rjmp L18
L15:
.dbline 76
.dbline 77
movw R30,R10
ldd R30,z+0
clr R31
add R30,R12
adc R31,R13
ldd R20,z+0
.dbline 78
ldi R18,8
mov R16,R20
rcall _send
.dbline 79
movw R24,R10
adiw R24,1
movw R10,R24
.dbline 80
L16:
.dbline 75
dec R22
L18:
.dbline 75
clr R2
cp R2,R22
brlo L15
.dbline 81
; unint MileagePulseCnt = 0;
; uchar MileageSaved = 1;
;
;
; //MOTOR POSITION
; SpeedMotorCurrent = MaxAngle; //for initialize
sbi 0x18,1
.dbline 82
; SpeedMotorSetting = 0;
sbi 0x12,0
.dbline -2
L14:
rcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r showdata 20 c
.dbsym r m 22 c
.dbsym r p 10 pc
.dbsym r lcdshow 12 pc
.dbend
.dbfile D:\prog251/EEPROM.h
.dbfunc e EEPROM_write _EEPROM_write fV
; ucData -> R18
; uiAddress -> R16,R17
.even
_EEPROM_write::
.dbline -1
.dbline 2
L20:
.dbline 5
L21:
.dbline 4
sbic 0x1c,1
rjmp L20
.dbline 7
out 0x1f,R17
out 0x1e,R16
.dbline 8
out 0x1d,R18
.dbline 10
cli
.dbline 11
sbi 0x1c,2
.dbline 13
sbi 0x1c,1
.dbline 14
sei
.dbline -2
L19:
.dbline 0 ; func end
ret
.dbsym r ucData 18 c
.dbsym r uiAddress 16 i
.dbend
.dbfunc e EEPROM_read _EEPROM_read fc
; uiAddress -> R16,R17
.even
_EEPROM_read::
.dbline -1
.dbline 18
L24:
.dbline 21
L25:
.dbline 20
sbic 0x1c,1
rjmp L24
.dbline 23
out 0x1f,R17
out 0x1e,R16
.dbline 25
sbi 0x1c,0
.dbline 27
in R16,0x1d
.dbline -2
L23:
.dbline 0 ; func end
ret
.dbsym r uiAddress 16 i
.dbend
.area data(ram, con, rel)
.dbfile D:\prog251/EEPROM.h
_MotorBlocked::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\prog251/EEPROM.h
.dbfile D:\prog251\251.c
.dbsym e MotorBlocked _MotorBlocked c
_CalculateBlocked::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.dbsym e CalculateBlocked _CalculateBlocked c
_ParallelBlocked::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.dbsym e ParallelBlocked _ParallelBlocked c
_Timer0Div::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.dbsym e Timer0Div _Timer0Div c
_MileageSaveBlocked::
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.dbsym e MileageSaveBlocked _MileageSaveBlocked c
_TimeIntervalRefreshed::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.dbsym e TimeIntervalRefreshed _TimeIntervalRefreshed c
_SpeedUltraLow::
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.dbsym e SpeedUltraLow _SpeedUltraLow c
_TimeInterval::
.blkb 4
.area idata
.word 41248,7
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.dbsym e TimeInterval _TimeInterval l
_TimeIntervalAvg::
.blkb 4
.area idata
.word 41248,7
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.dbsym e TimeIntervalAvg _TimeIntervalAvg l
_NPulseCnt::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.dbsym e NPulseCnt _NPulseCnt i
_NPulse::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.dbsym e NPulse _NPulse i
_NPulseAvg::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.dbsym e NPulseAvg _NPulseAvg i
_ADCCurrentChannel::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.dbsym e ADCCurrentChannel _ADCCurrentChannel c
_Voltage::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.dbsym e Voltage _Voltage A[12:6]i
_VoltageAvg::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.dbsym e VoltageAvg _VoltageAvg A[12:6]i
_VoltageRefreshed::
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile D:\prog251\251.c
.dbsym e VoltageRefreshed _VoltageRefreshed A[6:6]c
.area lit(rom, con, rel)
_VoltageOil::
.word 49
.word 284
.word 485
.dbfile D:\prog251/251SmallMeterDataTable.h
.dbsym e VoltageOil _VoltageOil A[6:3]ki
_MotorVoltageAngleOil::
.word 0
.word 540
.word 1080
.dbsym e MotorVoltageAngleOil _MotorVoltageAngleOil A[6:3]ki
_VoltageTemp::
.word 165
.word 186
.word 263
.word 603
.dbsym e VoltageTemp _VoltageTemp A[8:4]ki
_MotorVoltageAngleTemp::
.word 1080
.word 990
.word 720
.word 0
.dbsym e MotorVoltageAngleTemp _MotorVoltageAngleTemp A[8:4]ki
_VoltageOilP::
.word 44
.word 145
.word 198
.word 297
.word 376
.word 440
.word 497
.dbsym e VoltageOilP _VoltageOilP A[14:7]ki
_MotorVoltageAngleOilP::
.word 0
.word 130
.word 216
.word 432
.word 648
.word 864
.word 1080
.dbsym e MotorVoltageAngleOilP _MotorVoltageAngleOilP A[14:7]ki
_VoltageAir1::
.word 49
.word 133
.word 198
.word 251
.word 297
.word 339
.word 376
.word 410
.word 440
.word 467
.word 490
.dbsym e VoltageAir1 _VoltageAir1 A[22:11]ki
_MotorVoltageAngleAir1::
.word 0
.word 288
.word 576
.word 864
.word 1152
.word 1440
.word 1728
.word 2016
.word 2304
.word 2592
.word 2880
.dbsym e MotorVoltageAngleAir1 _MotorVoltageAngleAir1 A[22:11]ki
_VoltageAir2::
.word 49
.word 133
.word 198
.word 251
.word 297
.word 339
.word 376
.word 410
.word 440
.word 467
.word 490
.dbsym e VoltageAir2 _VoltageAir2 A[22:11]ki
_MotorVoltageAngleAir2::
.word 0
.word 288
.word 576
.word 864
.word 1152
.word 1440
.word 1728
.word 2016
.word 2304
.word 2592
.word 2880
.dbsym e MotorVoltageAngleAir2 _MotorVoltageAngleAir2 A[22:11]ki
_VoltageVolt::
.word 279
.word 496
.dbsym e VoltageVolt _VoltageVolt A[4:2]ki
_MotorVoltageAngleVolt::
.word 0
.word 1080
.dbsym e MotorVoltageAngleVolt _MotorVoltageAngleVolt A[4:2]ki
.area data(ram, con, rel)
.dbfile D:\prog251/251SmallMeterDataTable.h
_VoltageTable::
.blkw 1
.area idata
.word _VoltageOil
.area data(ram, con, rel)
.dbfile D:\prog251/251SmallMeterDataTable.h
.blkw 1
.area idata
.word _VoltageTemp
.area data(ram, con, rel)
.dbfile D:\prog251/251SmallMeterDataTable.h
.blkw 1
.area idata
.word _VoltageOilP
.area data(ram, con, rel)
.dbfile D:\prog251/251SmallMeterDataTable.h
.blkw 1
.area idata
.word _VoltageAir1
.area data(ram, con, rel)
.dbfile D:\prog251/251SmallMeterDataTable.h
.blkw 1
.area idata
.word _VoltageAir2
.area data(ram, con, rel)
.dbfile D:\prog251/251SmallMeterDataTable.h
.blkw 1
.area idata
.word _VoltageVolt
.area data(ram, con, rel)
.dbfile D:\prog251/251SmallMeterDataTable.h
.dbsym e VoltageTable _VoltageTable A[12:6]pki
_MotorVoltageAngleTable::
.blkw 1
.area idata
.word _MotorVoltageAngleOil
.area data(ram, con, rel)
.dbfile D:\prog251/251SmallMeterDataTable.h
.blkw 1
.area idata
.word _MotorVoltageAngleTemp
.area data(ram, con, rel)
.dbfile D:\prog251/251SmallMeterDataTable.h
.blkw 1
.area idata
.word _MotorVoltageAngleOilP
.area data(ram, con, rel)
.dbfile D:\prog251/251SmallMeterDataTable.h
.blkw 1
.area idata
.word _MotorVoltageAngleAir1
.area data(ram, con, rel)
.dbfile D:\prog251/251SmallMeterDataTable.h
.blkw 1
.area idata
.word _MotorVoltageAngleAir2
.area data(ram, con, rel)
.dbfile D:\prog251/251SmallMeterDataTable.h
.blkw 1
.area idata
.word _MotorVoltageAngleVolt
.area data(ram, con, rel)
.dbfile D:\prog251/251SmallMeterDataTable.h
.dbsym e MotorVoltageAngleTable _MotorVoltageAngleTable A[12:6]pki
.area lit(rom, con, rel)
_VoltageTableN::
.byte 2,3
.byte 6,10
.byte 10,1
.dbsym e VoltageTableN _VoltageTableN A[6:6]kc
.area data(ram, con, rel)
.dbfile D:\prog251/251SmallMeterDataTable.h
_mileage::
.blkb 4
.area idata
.word 0,0
.area data(ram, con, rel)
.dbfile D:\prog251/251SmallMeterDataTable.h
.dbfile D:\prog251\251.c
.dbsym e mileage _mileage l
_MileageCurrent::
.blkb 4
.area idata
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -