📄 main.s
字号:
.module main.c
.area vector(rom, abs)
.org 36
jmp _timer0_ovf_isr
.area text(rom, con, rel)
.dbfile E:\我的网页\mcuc\download\M16-23板程序模板\新建文件夹\main.c
.dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
_timer0_ovf_isr::
st -y,R2
st -y,R3
st -y,R4
st -y,R5
st -y,R24
st -y,R25
st -y,R26
st -y,R27
st -y,R30
in R2,0x3f
st -y,R2
xcall push_gset2
.dbline -1
.dbline 25
; //ICC-AVR application builder : 2004-10-27 10:06:29
; // Target : M16
; // Crystal: 8.0000Mhz
;
; /*****************************************************
; 微控电子 www.mcuc.cn
; modbus RTU 的mega16程序,使用ICCAVR编译
; 单片机mega16
; 通信波特率 9600 8位数据 1位停止位 偶校验 485通位接口
; 单片机控制板地址 localAddr(变量)
; 通信可设置数据的地址:
; 字地址 0 - 255 (只取16位的低8位)
; 位地址 0 - 255 (只取16位的低8位)
; ******************************************************/
;
;
; #include "main.h"
;
; uint32 tickCount,intTickCount;
; uint8 flag1ms,c200ms;
;
; #pragma interrupt_handler timer0_ovf_isr:10
; //定时器0 1ms定时中断
; void timer0_ovf_isr(void)
; {
.dbline 26
; TCNT0 = 0x83;
ldi R24,131
out 0x32,R24
.dbline 27
; intTickCount++;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
lds R4,_intTickCount+2
lds R5,_intTickCount+2+1
lds R2,_intTickCount
lds R3,_intTickCount+1
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _intTickCount+1,R3
sts _intTickCount,R2
sts _intTickCount+2+1,R5
sts _intTickCount+2,R4
.dbline 28
; flag1ms = 1; //1ms 时间到
ldi R24,1
sts _flag1ms,R24
.dbline -2
.dbline 40
;
; /*
; if(adcCount<=SAMPLECOUNT-1 && adcCount>=0)
; adcData[adcCount] = ADC & 0x3ff; //读取AD数据
; if(adcCount >= 0)
; {
; ADMUX = 0xc0 |(adcMux&0x0f);
; ADCSR |= 1 << ADSC; //启动ADC
; adcCount--;
; }
; */
; }//void timer0_ovf_isr(void)
L1:
xcall pop_gset2
ld R2,y+
out 0x3f,R2
ld R30,y+
ld R27,y+
ld R26,y+
ld R25,y+
ld R24,y+
ld R5,y+
ld R4,y+
ld R3,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.area bss(ram, con, rel)
.dbfile E:\我的网页\mcuc\download\M16-23板程序模板\新建文件夹\main.c
L3:
.blkb 2
L4:
.blkb 1
.area text(rom, con, rel)
.dbfile E:\我的网页\mcuc\download\M16-23板程序模板\新建文件夹\main.c
.dbfunc e timeProc _timeProc fV
.dbsym s i L4 c
.dbsym s second L3 i
.even
_timeProc::
.dbline -1
.dbline 43
;
; void timeProc(void)
; {
.dbline 47
; static uint16 second;
; static uint8 i;
;
; if(flag1ms == 1)
lds R24,_flag1ms
cpi R24,1
breq X0
xjmp L5
X0:
.dbline 48
; {
.dbline 49
; flag1ms = 0;
clr R2
sts _flag1ms,R2
.dbline 50
; CLI();
cli
.dbline 51
; tickCount = intTickCount;
lds R4,_intTickCount+2
lds R5,_intTickCount+2+1
lds R2,_intTickCount
lds R3,_intTickCount+1
sts _tickCount+1,R3
sts _tickCount,R2
sts _tickCount+2+1,R5
sts _tickCount+2,R4
.dbline 52
; SEI();
sei
.dbline 54
;
; if(receTimeOut>0)
clr R2
lds R3,_receTimeOut
cp R2,R3
brsh L7
.dbline 55
; {
.dbline 56
; receTimeOut--;
mov R24,R3
subi R24,1
sts _receTimeOut,R24
.dbline 57
; if(receTimeOut==0 && receCount>0) //判断通讯接收是否超时
tst R24
brne L9
lds R3,_receCount
cp R2,R3
brsh L9
.dbline 58
; {
.dbline 59
; receEnable(); //将485置为接收状态
cbi 0x18,7
.dbline 60
; receCount = 0; //将接收地址偏移寄存器清零
sts _receCount,R2
.dbline 61
; checkoutError = 0;
sts _checkoutError,R2
.dbline 62
; }
L9:
.dbline 63
; }
L7:
.dbline 65
;
; c200ms++;
lds R24,_c200ms
subi R24,255 ; addi 1
sts _c200ms,R24
.dbline 66
; if(c200ms > 100)
ldi R24,100
lds R2,_c200ms
cp R24,R2
brsh L11
.dbline 67
; {
.dbline 68
; c200ms = 0;
clr R2
sts _c200ms,R2
.dbline 69
; blinkLed(); //运行指示灯闪烁
ldi R24,64
in R2,0x18
eor R2,R24
out 0x18,R2
.dbline 70
; }
L11:
.dbline 72
;
; second++;
lds R24,L3
lds R25,L3+1
adiw R24,1
sts L3+1,R25
sts L3,R24
.dbline 73
; if(second > 10000)
ldi R24,10000
ldi R25,39
lds R2,L3
lds R3,L3+1
cp R24,R2
cpc R25,R3
brsh L13
.dbline 74
; {
.dbline 75
; second = 0;
clr R2
clr R3
sts L3+1,R3
sts L3,R2
.dbline 76
; }
L13:
.dbline 77
L5:
.dbline -2
.dbline 78
; }
; }//void timeProc(void)
L2:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; i -> R20,R21
.even
_main::
.dbline -1
.dbline 81
;
; void main(void)
; {
.dbline 84
; int16 i;
;
; varInit();
xcall _varInit
.dbline 85
; init_devices();
xcall _init_devices
.dbline 88
;
; //重新采样
; CLI();
cli
.dbline 89
; SEI();
sei
.dbline 91
;
; for(i=0;i<400;i++)
clr R20
clr R21
L16:
.dbline 92
.dbline 94
L17:
.dbline 91
subi R20,255 ; offset = 1
sbci R21,255
.dbline 91
cpi R20,144
ldi R30,1
cpc R21,R30
brlt L16
xjmp L21
L20:
.dbline 97
.dbline 98
wdr
.dbline 100
xcall _timeProc
.dbline 101
xcall _checkComm0Modbus
.dbline 103
L21:
.dbline 96
xjmp L20
X1:
.dbline -2
.dbline 104
; {
;
; }
;
; while(1)
; {
; WDR(); //this prevents a timout on enabling
;
; timeProc();
; checkComm0Modbus();
;
; }
; }
L15:
.dbline 0 ; func end
ret
.dbsym r i 20 I
.dbend
.area bss(ram, con, rel)
.dbfile E:\我的网页\mcuc\download\M16-23板程序模板\新建文件夹\main.c
_c200ms::
.blkb 1
.dbsym e c200ms _c200ms c
_flag1ms::
.blkb 1
.dbsym e flag1ms _flag1ms c
_intTickCount::
.blkb 4
.dbsym e intTickCount _intTickCount l
_tickCount::
.blkb 4
.dbsym e tickCount _tickCount l
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -