?? initt.lis
字號:
.module initt.c
.area text(rom, con, rel)
0000 .dbfile F:\網(wǎng)絡(luò)下載\AVR\完整應(yīng)用\電流電壓表\SOF\initt.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 22
0000 ; //ICC-AVR application builder : 2005-4-25 9:42:27
0000 ; // Target : M8
0000 ; // Crystal: 8.00Mhz
0000 ; /*
0000 ; * Copyright (c) 2005, 廣州力源電器公司開發(fā)部
0000 ; * All rights reserved.
0000 ; * 文件名稱:init.c 負(fù)責(zé)初始化MCU各內(nèi)部資源及外部端口
0000 ;
0000 ; * 當(dāng)前版本: 1.0
0000 ; * 作者: 張洪強(qiáng)
0000 ; * 完成日期: 2005.7.25
0000 ; */
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; //#include <interrupt.h>
0000 ; #include <signal.h>
0000 ; //#include <wdt.h>
0000 ; #include <eeprom.h>
0000 ; #include "init.h"
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 23
0000 ; PORTB = 0x0F; //PB0-4接鍵盤,設(shè)為輸入上拉
0000 8FE0 ldi R24,15
0002 88BB out 0x18,R24
0004 .dbline 24
0004 ; DDRB = 0xF0; //PB4-7接控制輸出,設(shè)為輸出不上拉
0004 80EF ldi R24,240
0006 87BB out 0x17,R24
0008 .dbline 25
0008 ; PORTC = 0x3C; //PC0,PC1接模擬信號進(jìn)行AD轉(zhuǎn)換,設(shè)為輸入不上拉
0008 8CE3 ldi R24,60
000A 85BB out 0x15,R24
000C .dbline 26
000C ; DDRC = 0x3C; //PC2,PC3,PC4,PC5接4位7段LED的位選端,設(shè)為輸出上拉
000C 84BB out 0x14,R24
000E .dbline 27
000E ; PORTD = 0xFF; //PORTD口接7段LED的段選端,全部設(shè)為輸出上拉
000E 8FEF ldi R24,255
0010 82BB out 0x12,R24
0012 .dbline 28
0012 ; DDRD = 0xFF;
0012 81BB out 0x11,R24
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e timer0_init _timer0_init fV
.even
0016 _timer0_init::
0016 .dbline -1
0016 .dbline 35
0016 ; }
0016 ;
0016 ; //TIMER0 initialize - prescale:1024
0016 ; // desired value: 50Hz
0016 ; // actual value: 50.080Hz (0.2%)
0016 ; void timer0_init(void)
0016 ; {
0016 .dbline 36
0016 ; TCCR0 = 0x00; //stop
0016 2224 clr R2
0018 23BE out 0x33,R2
001A .dbline 37
001A ; TCNT0 = 0xB2; //set count
001A 82EB ldi R24,178
001C 82BF out 0x32,R24
001E .dbline 38
001E ; TCCR0 = 0x05; //start timer
001E 85E0 ldi R24,5
0020 83BF out 0x33,R24
0022 .dbline -2
0022 L2:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
.area data(ram, con, rel)
0000 .dbfile F:\網(wǎng)絡(luò)下載\AVR\完整應(yīng)用\電流電壓表\SOF\initt.c
0000 L4:
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile F:\網(wǎng)絡(luò)下載\AVR\完整應(yīng)用\電流電壓表\SOF\initt.c
0001 L5:
0001 .blkb 2
.area idata
0001 0000 .word 0
.area data(ram, con, rel)
0003 .dbfile F:\網(wǎng)絡(luò)下載\AVR\完整應(yīng)用\電流電壓表\SOF\initt.c
0003 L6:
0003 .blkb 2
.area idata
0003 0000 .word 0
.area data(ram, con, rel)
0005 .dbfile F:\網(wǎng)絡(luò)下載\AVR\完整應(yīng)用\電流電壓表\SOF\initt.c
0005 L7:
0005 .blkb 2
.area idata
0005 FF00 .word 255
.area data(ram, con, rel)
0007 .dbfile F:\網(wǎng)絡(luò)下載\AVR\完整應(yīng)用\電流電壓表\SOF\initt.c
.area text(rom, con, rel)
0024 .dbfile F:\網(wǎng)絡(luò)下載\AVR\完整應(yīng)用\電流電壓表\SOF\initt.c
0024 .dbfunc e SIGNAL _SIGNAL fI
0024 .dbsym s min_value L7 i
0024 .dbsym s max_value L6 i
0024 .dbsym s total L5 i
0024 .dbsym s i L4 c
0024 ; SIG_OVERFLOW0 -> R20,R21
.even
0024 _SIGNAL::
0024 00D0 rcall push_gset1
0026 A801 movw R20,R16
0028 .dbline -1
0028 .dbline 43
0028 ; }
0028 ;
0028 ; //#pragma interrupt_handler timer0_ovf_isr:10
0028 ; SIGNAL(SIG_OVERFLOW0)
0028 ; {
0028 .dbline 46
0028 ; static unsigned char i = 0;
0028 ; static unsigned int total = 0,max_value = 0,min_value = 0xff;
0028 ; TCNT0 = 0xB2; //reload counter value
0028 82EB ldi R24,178
002A 82BF out 0x32,R24
002C .dbline 47
002C ; if ( TIMER_EN )
002C 20900800 lds R2,_TIMER_EN
0030 2220 tst R2
0032 49F0 breq L8
0034 .dbline 48
0034 ; {
0034 .dbline 49
0034 ; TIMER_NUM++;
0034 80910900 lds R24,_TIMER_NUM
0038 90910A00 lds R25,_TIMER_NUM+1
003C 0196 adiw R24,1
003E 90930A00 sts _TIMER_NUM+1,R25
0042 80930900 sts _TIMER_NUM,R24
0046 .dbline 50
0046 ; }
0046 L8:
0046 .dbline 51
0046 ; if ( adc_data_temp > max_value )
0046 20900300 lds R2,L6
004A 30900400 lds R3,L6+1
004E 40900B00 lds R4,_adc_data_temp
0052 50900C00 lds R5,_adc_data_temp+1
0056 2414 cp R2,R4
0058 3504 cpc R3,R5
005A 28F4 brsh L10
005C .dbline 52
005C ; {
005C .dbline 53
005C ; max_value = adc_data_temp;
005C 1201 movw R2,R4
005E 30920400 sts L6+1,R3
0062 20920300 sts L6,R2
0066 .dbline 54
0066 ; }
0066 L10:
0066 .dbline 55
0066 ; if ( adc_data_temp < min_value )
0066 20900500 lds R2,L7
006A 30900600 lds R3,L7+1
006E 40900B00 lds R4,_adc_data_temp
0072 50900C00 lds R5,_adc_data_temp+1
0076 4214 cp R4,R2
0078 5304 cpc R5,R3
007A 28F4 brsh L12
007C .dbline 56
007C ; {
007C .dbline 57
007C ; min_value = adc_data_temp;
007C 1201 movw R2,R4
007E 30920600 sts L7+1,R3
0082 20920500 sts L7,R2
0086 .dbline 58
0086 ; }
0086 L12:
0086 .dbline 59
0086 ; total += adc_data_temp;
0086 20900B00 lds R2,_adc_data_temp
008A 30900C00 lds R3,_adc_data_temp+1
008E 40900100 lds R4,L5
0092 50900200 lds R5,L5+1
0096 420C add R4,R2
0098 531C adc R5,R3
009A 50920200 sts L5+1,R5
009E 40920100 sts L5,R4
00A2 .dbline 60
00A2 ; if ( i == 49 )
00A2 80910000 lds R24,L4
00A6 8133 cpi R24,49
00A8 09F0 breq X0
00AA 4AC0 rjmp L14
00AC X0:
00AC .dbline 61
00AC ; {
00AC .dbline 62
00AC ; adc_data[0] =( total - min_value - max_value ) / 48.0;
00AC 20900500 lds R2,L7
00B0 30900600 lds R3,L7+1
00B4 4218 sub R4,R2
00B6 5308 sbc R5,R3
00B8 20900300 lds R2,L6
00BC 30900400 lds R3,L6+1
00C0 4218 sub R4,R2
00C2 5308 sbc R5,R3
00C4 00E0 ldi R16,<L16
00C6 10E0 ldi R17,>L16
00C8 00D0 rcall lpm32
00CA 3A93 st -y,R19
00CC 2A93 st -y,R18
00CE 1A93 st -y,R17
00D0 0A93 st -y,R16
00D2 8201 movw R16,R4
00D4 1695 lsr R17
00D6 0795 ror R16
00D8 00D0 rcall int2fp
00DA 3A93 st -y,R19
00DC 2A93 st -y,R18
00DE 1A93 st -y,R17
00E0 0A93 st -y,R16
00E2 00D0 rcall empy32fs
00E4 8201 movw R16,R4
00E6 0170 andi R16,1
00E8 1070 andi R17,0
00EA 00D0 rcall int2fp
00EC 3A93 st -y,R19
00EE 2A93 st -y,R18
00F0 1A93 st -y,R17
00F2 0A93 st -y,R16
00F4 00D0 rcall add32fs
00F6 00E0 ldi R16,<L17
00F8 10E0 ldi R17,>L17
00FA 00D0 rcall lpm32
00FC 3A93 st -y,R19
00FE 2A93 st -y,R18
0100 1A93 st -y,R17
0102 0A93 st -y,R16
0104 00D0 rcall div32f
0106 10930100 sts _adc_data+1,R17
010A 00930000 sts _adc_data,R16
010E 30930300 sts _adc_data+2+1,R19
0112 20930200 sts _adc_data+2,R18
0116 .dbline 63
0116 ; adc_data_temp = 0;
0116 2224 clr R2
0118 3324 clr R3
011A 30920C00 sts _adc_data_temp+1,R3
011E 20920B00 sts _adc_data_temp,R2
0122 .dbline 64
0122 ; max_value = 0;
0122 30920400 sts L6+1,R3
0126 20920300 sts L6,R2
012A .dbline 65
012A ; min_value = 0xff;
012A 8FEF ldi R24,255
012C 90E0 ldi R25,0
012E 90930600 sts L7+1,R25
0132 80930500 sts L7,R24
0136 .dbline 66
0136 ; total = 0;
0136 30920200 sts L5+1,R3
013A 20920100 sts L5,R2
013E .dbline 67
013E ; }
013E 52C0 rjmp L15
0140 L14:
0140 .dbline 68
0140 ; else if ( i == 99 )
0140 80910000 lds R24,L4
0144 8336 cpi R24,99
0146 09F0 breq X1
0148 4DC0 rjmp L18
014A X1:
014A .dbline 69
014A ; {
014A .dbline 70
014A ; adc_data[1] =( total - min_value - max_value ) / 48.0;
014A 20900500 lds R2,L7
014E 30900600 lds R3,L7+1
0152 40900100 lds R4,L5
0156 50900200 lds R5,L5+1
015A 4218 sub R4,R2
015C 5308 sbc R5,R3
015E 20900300 lds R2,L6
0162 30900400 lds R3,L6+1
0166 4218 sub R4,R2
0168 5308 sbc R5,R3
016A 00E0 ldi R16,<L16
016C 10E0 ldi R17,>L16
016E 00D0 rcall lpm32
0170 3A93 st -y,R19
0172 2A93 st -y,R18
0174 1A93 st -y,R17
0176 0A93 st -y,R16
0178 8201 movw R16,R4
017A 1695 lsr R17
017C 0795 ror R16
017E 00D0 rcall int2fp
0180 3A93 st -y,R19
0182 2A93 st -y,R18
0184 1A93 st -y,R17
0186 0A93 st -y,R16
0188 00D0 rcall empy32fs
018A 8201 movw R16,R4
018C 0170 andi R16,1
018E 1070 andi R17,0
0190 00D0 rcall int2fp
0192 3A93 st -y,R19
0194 2A93 st -y,R18
0196 1A93 st -y,R17
0198 0A93 st -y,R16
019A 00D0 rcall add32fs
019C 00E0 ldi R16,<L17
019E 10E0 ldi R17,>L17
01A0 00D0 rcall lpm32
01A2 3A93 st -y,R19
01A4 2A93 st -y,R18
01A6 1A93 st -y,R17
01A8 0A93 st -y,R16
01AA 00D0 rcall div32f
01AC 10930500 sts _adc_data+4+1,R17
01B0 00930400 sts _adc_data+4,R16
01B4 30930700 sts _adc_data+4+2+1,R19
01B8 20930600 sts _adc_data+4+2,R18
01BC .dbline 71
01BC ; adc_data_temp = 0;
01BC 2224 clr R2
01BE 3324 clr R3
01C0 30920C00 sts _adc_data_temp+1,R3
01C4 20920B00 sts _adc_data_temp,R2
01C8 .dbline 72
01C8 ; max_value = 0;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -