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

📄 251.s

📁 卡车仪表的单片机程序
💻 S
📖 第 1 页 / 共 5 页
字号:
	.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 + -