📄 main.s
字号:
; global_detect_close[0]=global_detect_close[1];
lds R2,_global_detect_close+2
lds R3,_global_detect_close+2+1
sts _global_detect_close+1,R3
sts _global_detect_close,R2
.dbline 131
; global_detect_close[1]=global_detect_close[2];
lds R2,_global_detect_close+4
lds R3,_global_detect_close+4+1
sts _global_detect_close+2+1,R3
sts _global_detect_close+2,R2
.dbline 132
; global_detect_close[2]=int16_temp1;
sts _global_detect_close+4+1,R21
sts _global_detect_close+4,R20
.dbline 134
; // global_detect_close[2]=int16_temp1;
; }
L29:
.dbline 136
; //分闸线圈采样
; if(global_ad_counter%2==1)
lds R24,_global_ad_counter
lds R25,_global_ad_counter+1
andi R24,1
andi R25,0
cpi R24,1
ldi R30,0
cpc R25,R30
brne L35
.dbline 137
; {
.dbline 139
; // global_detect_trip[0]=int16_temp1;
; global_detect_trip[0]=global_detect_trip[1];
lds R2,_global_detect_trip+2
lds R3,_global_detect_trip+2+1
sts _global_detect_trip+1,R3
sts _global_detect_trip,R2
.dbline 140
; global_detect_trip[1]=global_detect_trip[2];
lds R2,_global_detect_trip+4
lds R3,_global_detect_trip+4+1
sts _global_detect_trip+2+1,R3
sts _global_detect_trip+2,R2
.dbline 141
; global_detect_trip[2]=int16_temp1;
sts _global_detect_trip+4+1,R21
sts _global_detect_trip+4,R20
.dbline 143
; // global_detect_trip[2]=int16_temp1;
; }
L35:
.dbline 146
; //判断是否有码值变化
; //判断合闸数据
; if((global_detect_close[0]>2046)&&(global_detect_close[1]>2046)&&(global_detect_close[2]>2046))//&&(global_detect_close[3]>2045)&&(global_detect_close[4]>2045))
ldi R24,2046
ldi R25,7
lds R2,_global_detect_close
lds R3,_global_detect_close+1
cp R24,R2
cpc R25,R3
brsh L41
lds R2,_global_detect_close+2
lds R3,_global_detect_close+2+1
cp R24,R2
cpc R25,R3
brsh L41
lds R2,_global_detect_close+4
lds R3,_global_detect_close+4+1
cp R24,R2
cpc R25,R3
brsh L41
.dbline 147
; {
.dbline 149
; //检测到动作标志赋值
; global_operation_detected_flag=1;
ldi R24,1
ldi R25,0
sts _global_operation_detected_flag+1,R25
sts _global_operation_detected_flag,R24
.dbline 150
; }
L41:
.dbline 160
; // if(global_detect_close[0]>2049)
; // {
; // if((global_detect_close[1]-global_detect_close[0]>1)&&(global_detect_close[2]-global_detect_close[1]>1))//&&(global_detect_close[3]-global_detect_close[0]>1))
; // {
; //检测到动作标志赋值
; // global_operation_detected_flag=1;
; // }
; // }
; //判断分闸数据
; if((global_detect_trip[0]>2046)&&(global_detect_trip[1]>2046)&&(global_detect_trip[2]>2046))//&&(global_detect_trip[3]>2045)&&(global_detect_trip[4]>2045))
ldi R24,2046
ldi R25,7
lds R2,_global_detect_trip
lds R3,_global_detect_trip+1
cp R24,R2
cpc R25,R3
brsh L45
lds R2,_global_detect_trip+2
lds R3,_global_detect_trip+2+1
cp R24,R2
cpc R25,R3
brsh L45
lds R2,_global_detect_trip+4
lds R3,_global_detect_trip+4+1
cp R24,R2
cpc R25,R3
brsh L45
.dbline 161
; {
.dbline 163
; //检测到动作标志赋值
; global_operation_detected_flag=1;
ldi R24,1
ldi R25,0
sts _global_operation_detected_flag+1,R25
sts _global_operation_detected_flag,R24
.dbline 164
; }
L45:
.dbline 178
; // if(global_detect_trip[0]>2049)
; // {
; // if((global_detect_trip[1]-global_detect_trip[0]>1)&&(global_detect_trip[2]-global_detect_trip[1]>1))//&&(global_detect_trip[3]-global_detect_trip[0]>1))
; // {
; //检测到动作标志赋值
; // global_operation_detected_flag=1;
; // }
; // }
; // if(int16_temp1>2049)
; // {
; //检测到动作标志赋值
; // global_operation_detected_flag=1;
; // }
; global_ad_counter++;
lds R24,_global_ad_counter
lds R25,_global_ad_counter+1
adiw R24,1
sts _global_ad_counter+1,R25
sts _global_ad_counter,R24
.dbline 179
; }
L27:
.dbline 181
; //完成一次AD转换,将AD转换结束标志赋值
; global_ad_finish_flag=0xFF;
ldi R24,255
ldi R25,0
sts _global_ad_finish_flag+1,R25
sts _global_ad_finish_flag,R24
.dbline -2
L19:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l i 1 i
.dbsym r temp2 22 i
.dbsym r temp1 22 i
.dbsym r int16_temp1 20 i
.dbsym r SIG_INTERRUPT7 16 I
.dbend
.dbfunc e main _main fI
; i -> R16,R17
.even
_main::
.dbline -1
.dbline 188
; //开中断
; //sei();
; }
;
; //主程序//////////////////////////////
; int main()
; {
.dbline 199
; //变量定义
; unsigned int i;
; //初始化和串口波特率设置
; //INITIATION();
; //PG3供测试用/////////////
; //sbi(DDRG,3);
; //cbi(PORTG,3);
; //开中断
; //sei();
; //自动测试标志初始化
; global_sample_mode_flag=0xFF;
ldi R24,255
ldi R25,0
sts _global_sample_mode_flag+1,R25
sts _global_sample_mode_flag,R24
.dbline 201
; //采集控制标志初始化
; global_start_sample_flag=0xFF;
sts _global_start_sample_flag+1,R25
sts _global_start_sample_flag,R24
.dbline 203
; //串口接收控制变量初始化
; global_flag_serie=0;
clr R2
clr R3
sts _global_flag_serie+1,R3
sts _global_flag_serie,R2
.dbline 207
; //开串口接收中断
; //UART_RXCINT_OPEN();
; //延时
; for(i=0;i<0xFF;i++)
clr R16
clr R17
xjmp L53
X9:
.dbline 208
; {
L54:
.dbline 211
.dbline 211
.dbline 211
L55:
.dbline 211
in R2,0x36
sbrs R2,4
rjmp L54
.dbline 212
in R24,0x36
ori R24,16
out 0x36,R24
.dbline 215
L51:
.dbline 207
subi R16,255 ; offset = 1
sbci R17,255
L53:
.dbline 207
cpi R16,255
ldi R30,0
cpc R17,R30
brlo L55
L57:
.dbline 218
.dbline 263
L58:
.dbline 217
; //TIMER_BEGIN();
; //等待定时器溢出,AD结束中断处理在等待过程中完成
; while(!(TIFR&(1<<OCF1A))){;}
; TIFR|=1<<OCF1A;
; //终止定时器
; //TIMER_STOP();
; }
; //数据采集流程
; while(1)
xjmp L57
X10:
.dbline 265
L60:
.dbline 265
; {
; /*
; //检测动作开始标志清零
; for(i=0;i<4;i++){global_detect_close[i]=0;}
; for(i=0;i<4;i++){global_detect_trip[i]=0;}
; //如果自动测试
; if(global_sample_mode_flag==0x00)
; {
; //关串口接收中断
; UART_RXCINT_CLOSE();
; //开外部中断7(AD转换结束中断)
; EXTERN_INTERRUPT_OPEN(7);
; //检测采样
; OPERATION_DETECTION();
; //如果检测到有信号变化,向COUNTER发送开始采集命令
; // sbi(UCSR0B,TXB8);//将TXB8置1
; UART_DATA_BYTE_SEND(0x10);//发送数据采集命令
; //开始采样
; SAMPLE();
; //关外部中断7
; EXTERN_INTERRUPT_CLOSE(7);
; //开串口接收中断,等待数据包传输命令
; UART_RXCINT_OPEN();
; //向主机发送采集结束命令0x33
; UART_DATA_BYTE_SEND(0x33);
; //自动测试标志复原
; global_sample_mode_flag=0xFF;
; }
; //如果接收到开始采集命令
; if(global_start_sample_flag==0x00)
; {
; //关串口接收中断
; UART_RXCINT_CLOSE();
; //开外部中断7(AD转换结束中断)
; EXTERN_INTERRUPT_OPEN(7);
; //采样
; SAMPLE();
; //关外部中断7
; EXTERN_INTERRUPT_CLOSE(7);
; //开串口接收中断,等待数据包传输命令
; UART_RXCINT_OPEN();
; //开始采集标志复原
; global_start_sample_flag=0xFF;
; }
; */
; }
;
; for(;;){;}
.dbline 265
.dbline 265
.dbline 265
.dbline 265
xjmp L60
X11:
.dbline 266
; return 0;
clr R16
clr R17
.dbline -2
L49:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.area bss(ram, con, rel)
.dbfile C:\AVR\AD\main.c
_global_ad_finish_flag::
.blkb 2
.dbsym e global_ad_finish_flag _global_ad_finish_flag i
_global_voltage_counter::
.blkb 2
.dbsym e global_voltage_counter _global_voltage_counter i
_global_motor_counter::
.blkb 2
.dbsym e global_motor_counter _global_motor_counter i
_global_trip_counter::
.blkb 2
.dbsym e global_trip_counter _global_trip_counter i
_global_close_counter::
.blkb 2
.dbsym e global_close_counter _global_close_counter i
_global_channel_flag::
.blkb 2
.dbsym e global_channel_flag _global_channel_flag i
_global_detect_trip::
.blkb 10
.dbsym e global_detect_trip _global_detect_trip A[10:5]i
_global_detect_close::
.blkb 10
.dbsym e global_detect_close _global_detect_close A[10:5]i
_global_operation_detected_flag::
.blkb 2
.dbsym e global_operation_detected_flag _global_operation_detected_flag i
_global_sample_mode_flag::
.blkb 2
.dbsym e global_sample_mode_flag _global_sample_mode_flag i
_global_start_sample_flag::
.blkb 2
.dbsym e global_start_sample_flag _global_start_sample_flag i
_global_ad_counter::
.blkb 2
.dbsym e global_ad_counter _global_ad_counter i
_global_flag_serie::
.blkb 2
.dbsym e global_flag_serie _global_flag_serie i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -