?? main.lis
字號:
.module main.c
.area vector(rom, abs)
.org 36
0024 0C940000 jmp _timer0_ovf_isr
.area text(rom, con, rel)
0000 .dbfile E:\我的網頁\mcuc\download\M16-23板程序模板\新建文件夾\main.c
0000 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
0000 _timer0_ovf_isr::
0000 2A92 st -y,R2
0002 3A92 st -y,R3
0004 4A92 st -y,R4
0006 5A92 st -y,R5
0008 8A93 st -y,R24
000A 9A93 st -y,R25
000C AA93 st -y,R26
000E BA93 st -y,R27
0010 EA93 st -y,R30
0012 2FB6 in R2,0x3f
0014 2A92 st -y,R2
0016 0E940000 xcall push_gset2
001A .dbline -1
001A .dbline 25
001A ; //ICC-AVR application builder : 2004-10-27 10:06:29
001A ; // Target : M16
001A ; // Crystal: 8.0000Mhz
001A ;
001A ; /*****************************************************
001A ; 微控電子 www.mcuc.cn
001A ; modbus RTU 的mega16程序,使用ICCAVR編譯
001A ; 單片機mega16
001A ; 通信波特率 9600 8位數據 1位停止位 偶校驗 485通位接口
001A ; 單片機控制板地址 localAddr(變量)
001A ; 通信可設置數據的地址:
001A ; 字地址 0 - 255 (只取16位的低8位)
001A ; 位地址 0 - 255 (只取16位的低8位)
001A ; ******************************************************/
001A ;
001A ;
001A ; #include "main.h"
001A ;
001A ; uint32 tickCount,intTickCount;
001A ; uint8 flag1ms,c200ms;
001A ;
001A ; #pragma interrupt_handler timer0_ovf_isr:10
001A ; //定時器0 1ms定時中斷
001A ; void timer0_ovf_isr(void)
001A ; {
001A .dbline 26
001A ; TCNT0 = 0x83;
001A 83E8 ldi R24,131
001C 82BF out 0x32,R24
001E .dbline 27
001E ; intTickCount++;
001E 41E0 ldi R20,1
0020 50E0 ldi R21,0
0022 60E0 ldi R22,0
0024 70E0 ldi R23,0
0026 40900700 lds R4,_intTickCount+2
002A 50900800 lds R5,_intTickCount+2+1
002E 20900500 lds R2,_intTickCount
0032 30900600 lds R3,_intTickCount+1
0036 240E add R2,R20
0038 351E adc R3,R21
003A 461E adc R4,R22
003C 571E adc R5,R23
003E 30920600 sts _intTickCount+1,R3
0042 20920500 sts _intTickCount,R2
0046 50920800 sts _intTickCount+2+1,R5
004A 40920700 sts _intTickCount+2,R4
004E .dbline 28
004E ; flag1ms = 1; //1ms 時間到
004E 81E0 ldi R24,1
0050 80930400 sts _flag1ms,R24
0054 .dbline -2
0054 .dbline 40
0054 ;
0054 ; /*
0054 ; if(adcCount<=SAMPLECOUNT-1 && adcCount>=0)
0054 ; adcData[adcCount] = ADC & 0x3ff; //讀取AD數據
0054 ; if(adcCount >= 0)
0054 ; {
0054 ; ADMUX = 0xc0 |(adcMux&0x0f);
0054 ; ADCSR |= 1 << ADSC; //啟動ADC
0054 ; adcCount--;
0054 ; }
0054 ; */
0054 ; }//void timer0_ovf_isr(void)
0054 L1:
0054 0E940000 xcall pop_gset2
0058 2990 ld R2,y+
005A 2FBE out 0x3f,R2
005C E991 ld R30,y+
005E B991 ld R27,y+
0060 A991 ld R26,y+
0062 9991 ld R25,y+
0064 8991 ld R24,y+
0066 5990 ld R5,y+
0068 4990 ld R4,y+
006A 3990 ld R3,y+
006C 2990 ld R2,y+
006E .dbline 0 ; func end
006E 1895 reti
0070 .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\我的網頁\mcuc\download\M16-23板程序模板\新建文件夾\main.c
0000 L3:
0000 .blkb 2
0002 L4:
0002 .blkb 1
.area text(rom, con, rel)
0070 .dbfile E:\我的網頁\mcuc\download\M16-23板程序模板\新建文件夾\main.c
0070 .dbfunc e timeProc _timeProc fV
0070 .dbsym s i L4 c
0070 .dbsym s second L3 i
.even
0070 _timeProc::
0070 .dbline -1
0070 .dbline 43
0070 ;
0070 ; void timeProc(void)
0070 ; {
0070 .dbline 47
0070 ; static uint16 second;
0070 ; static uint8 i;
0070 ;
0070 ; if(flag1ms == 1)
0070 80910400 lds R24,_flag1ms
0074 8130 cpi R24,1
0076 09F0 breq X0
0078 52C0 xjmp L5
007A X0:
007A .dbline 48
007A ; {
007A .dbline 49
007A ; flag1ms = 0;
007A 2224 clr R2
007C 20920400 sts _flag1ms,R2
0080 .dbline 50
0080 ; CLI();
0080 F894 cli
0082 .dbline 51
0082 ; tickCount = intTickCount;
0082 40900700 lds R4,_intTickCount+2
0086 50900800 lds R5,_intTickCount+2+1
008A 20900500 lds R2,_intTickCount
008E 30900600 lds R3,_intTickCount+1
0092 30920A00 sts _tickCount+1,R3
0096 20920900 sts _tickCount,R2
009A 50920C00 sts _tickCount+2+1,R5
009E 40920B00 sts _tickCount+2,R4
00A2 .dbline 52
00A2 ; SEI();
00A2 7894 sei
00A4 .dbline 54
00A4 ;
00A4 ; if(receTimeOut>0)
00A4 2224 clr R2
00A6 30900000 lds R3,_receTimeOut
00AA 2314 cp R2,R3
00AC 78F4 brsh L7
00AE .dbline 55
00AE ; {
00AE .dbline 56
00AE ; receTimeOut--;
00AE 832D mov R24,R3
00B0 8150 subi R24,1
00B2 80930000 sts _receTimeOut,R24
00B6 .dbline 57
00B6 ; if(receTimeOut==0 && receCount>0) //判斷通訊接收是否超時
00B6 8823 tst R24
00B8 49F4 brne L9
00BA 30900000 lds R3,_receCount
00BE 2314 cp R2,R3
00C0 28F4 brsh L9
00C2 .dbline 58
00C2 ; {
00C2 .dbline 59
00C2 ; receEnable(); //將485置為接收狀態
00C2 C798 cbi 0x18,7
00C4 .dbline 60
00C4 ; receCount = 0; //將接收地址偏移寄存器清零
00C4 20920000 sts _receCount,R2
00C8 .dbline 61
00C8 ; checkoutError = 0;
00C8 20920000 sts _checkoutError,R2
00CC .dbline 62
00CC ; }
00CC L9:
00CC .dbline 63
00CC ; }
00CC L7:
00CC .dbline 65
00CC ;
00CC ; c200ms++;
00CC 80910300 lds R24,_c200ms
00D0 8F5F subi R24,255 ; addi 1
00D2 80930300 sts _c200ms,R24
00D6 .dbline 66
00D6 ; if(c200ms > 100)
00D6 84E6 ldi R24,100
00D8 20900300 lds R2,_c200ms
00DC 8215 cp R24,R2
00DE 38F4 brsh L11
00E0 .dbline 67
00E0 ; {
00E0 .dbline 68
00E0 ; c200ms = 0;
00E0 2224 clr R2
00E2 20920300 sts _c200ms,R2
00E6 .dbline 69
00E6 ; blinkLed(); //運行指示燈閃爍
00E6 80E4 ldi R24,64
00E8 28B2 in R2,0x18
00EA 2826 eor R2,R24
00EC 28BA out 0x18,R2
00EE .dbline 70
00EE ; }
00EE L11:
00EE .dbline 72
00EE ;
00EE ; second++;
00EE 80910000 lds R24,L3
00F2 90910100 lds R25,L3+1
00F6 0196 adiw R24,1
00F8 90930100 sts L3+1,R25
00FC 80930000 sts L3,R24
0100 .dbline 73
0100 ; if(second > 10000)
0100 80E1 ldi R24,10000
0102 97E2 ldi R25,39
0104 20900000 lds R2,L3
0108 30900100 lds R3,L3+1
010C 8215 cp R24,R2
010E 9305 cpc R25,R3
0110 30F4 brsh L13
0112 .dbline 74
0112 ; {
0112 .dbline 75
0112 ; second = 0;
0112 2224 clr R2
0114 3324 clr R3
0116 30920100 sts L3+1,R3
011A 20920000 sts L3,R2
011E .dbline 76
011E ; }
011E L13:
011E .dbline 77
011E L5:
011E .dbline -2
011E .dbline 78
011E ; }
011E ; }//void timeProc(void)
011E L2:
011E .dbline 0 ; func end
011E 0895 ret
0120 .dbend
0120 .dbfunc e main _main fV
0120 ; i -> R20,R21
.even
0120 _main::
0120 .dbline -1
0120 .dbline 81
0120 ;
0120 ; void main(void)
0120 ; {
0120 .dbline 84
0120 ; int16 i;
0120 ;
0120 ; varInit();
0120 0E940000 xcall _varInit
0124 .dbline 85
0124 ; init_devices();
0124 0E940000 xcall _init_devices
0128 .dbline 88
0128 ;
0128 ; //重新采樣
0128 ; CLI();
0128 F894 cli
012A .dbline 89
012A ; SEI();
012A 7894 sei
012C .dbline 91
012C ;
012C ; for(i=0;i<400;i++)
012C 4427 clr R20
012E 5527 clr R21
0130 L16:
0130 .dbline 92
0130 .dbline 94
0130 L17:
0130 .dbline 91
0130 4F5F subi R20,255 ; offset = 1
0132 5F4F sbci R21,255
0134 .dbline 91
0134 4039 cpi R20,144
0136 E1E0 ldi R30,1
0138 5E07 cpc R21,R30
013A D4F3 brlt L16
013C 04C0 xjmp L21
013E L20:
013E .dbline 97
013E .dbline 98
013E A895 wdr
0140 .dbline 100
0140 97DF xcall _timeProc
0142 .dbline 101
0142 0E940000 xcall _checkComm0Modbus
0146 .dbline 103
0146 L21:
0146 .dbline 96
0146 FBCF xjmp L20
0148 X1:
0148 .dbline -2
0148 .dbline 104
0148 ; {
0148 ;
0148 ; }
0148 ;
0148 ; while(1)
0148 ; {
0148 ; WDR(); //this prevents a timout on enabling
0148 ;
0148 ; timeProc();
0148 ; checkComm0Modbus();
0148 ;
0148 ; }
0148 ; }
0148 L15:
0148 .dbline 0 ; func end
0148 0895 ret
014A .dbsym r i 20 I
014A .dbend
.area bss(ram, con, rel)
0003 .dbfile E:\我的網頁\mcuc\download\M16-23板程序模板\新建文件夾\main.c
0003 _c200ms::
0003 .blkb 1
0004 .dbsym e c200ms _c200ms c
0004 _flag1ms::
0004 .blkb 1
0005 .dbsym e flag1ms _flag1ms c
0005 _intTickCount::
0005 .blkb 4
0009 .dbsym e intTickCount _intTickCount l
0009 _tickCount::
0009 .blkb 4
000D .dbsym e tickCount _tickCount l
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -