📄 jdbh.lst
字号:
(0125) //采样轮转赋值
(0126) //合闸线圈采样
(0127) if(global_ad_counter%2==0)
0111 90200126 LDS R2,global_ad_counter
0113 90300127 LDS R3,global_ad_counter+1
0115 FC20 SBRC R2,0
0116 C014 RJMP 0x012B
(0128) {
(0129) // global_detect_close[0]=int16_temp1;
(0130) global_detect_close[0]=global_detect_close[1];
0117 90200118 LDS R2,global_detect_close+2
0119 90300119 LDS R3,global_detect_close+3
011B 92300117 STS global_detect_close+1,R3
011D 92200116 STS global_detect_close,R2
(0131) global_detect_close[1]=global_detect_close[2];
011F 9020011A LDS R2,0x11A
0121 9030011B LDS R3,0x11B
0123 92300119 STS global_detect_close+3,R3
0125 92200118 STS global_detect_close+2,R2
(0132) global_detect_close[2]=int16_temp1;
0127 9350011B STS 0x11B,R21
0129 9340011A STS 0x11A,R20
(0133) // global_detect_close[2]=int16_temp1;
(0134) }
(0135) //分闸线圈采样
(0136) if(global_ad_counter%2==1)
012B 91800126 LDS R24,global_ad_counter
012D 91900127 LDS R25,global_ad_counter+1
012F 7081 ANDI R24,1
0130 7090 ANDI R25,0
0131 3081 CPI R24,1
0132 E0E0 LDI R30,0
0133 079E CPC R25,R30
0134 F4A1 BNE 0x0149
(0137) {
(0138) // global_detect_trip[0]=int16_temp1;
(0139) global_detect_trip[0]=global_detect_trip[1];
0135 9020010E LDS R2,global_detect_trip+2
0137 9030010F LDS R3,global_detect_trip+3
0139 9230010D STS global_detect_trip+1,R3
013B 9220010C STS global_detect_trip,R2
(0140) global_detect_trip[1]=global_detect_trip[2];
013D 90200110 LDS R2,0x110
013F 90300111 LDS R3,0x111
0141 9230010F STS global_detect_trip+3,R3
0143 9220010E STS global_detect_trip+2,R2
(0141) global_detect_trip[2]=int16_temp1;
0145 93500111 STS 0x111,R21
0147 93400110 STS 0x110,R20
(0142) // global_detect_trip[2]=int16_temp1;
(0143) }
(0144) //判断是否有码值变化
(0145) //判断合闸数据
(0146) 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))
0149 EF8E LDI R24,0xFE
014A E097 LDI R25,7
014B 90200116 LDS R2,global_detect_close
014D 90300117 LDS R3,global_detect_close+1
014F 1582 CP R24,R2
0150 0593 CPC R25,R3
0151 F4A0 BCC 0x0166
0152 90200118 LDS R2,global_detect_close+2
0154 90300119 LDS R3,global_detect_close+3
0156 1582 CP R24,R2
0157 0593 CPC R25,R3
0158 F468 BCC 0x0166
0159 9020011A LDS R2,0x11A
015B 9030011B LDS R3,0x11B
015D 1582 CP R24,R2
015E 0593 CPC R25,R3
015F F430 BCC 0x0166
(0147) {
(0148) //检测到动作标志赋值
(0149) global_operation_detected_flag=1;
0160 E081 LDI R24,1
0161 E090 LDI R25,0
0162 93900121 STS global_operation_detected_flag+1,R25
0164 93800120 STS global_operation_detected_flag,R24
(0150) }
(0151) // if(global_detect_close[0]>2049)
(0152) // {
(0153) // 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))
(0154) // {
(0155) //检测到动作标志赋值
(0156) // global_operation_detected_flag=1;
(0157) // }
(0158) // }
(0159) //判断分闸数据
(0160) 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))
0166 EF8E LDI R24,0xFE
0167 E097 LDI R25,7
0168 9020010C LDS R2,global_detect_trip
016A 9030010D LDS R3,global_detect_trip+1
016C 1582 CP R24,R2
016D 0593 CPC R25,R3
016E F4A0 BCC 0x0183
016F 9020010E LDS R2,global_detect_trip+2
0171 9030010F LDS R3,global_detect_trip+3
0173 1582 CP R24,R2
0174 0593 CPC R25,R3
0175 F468 BCC 0x0183
0176 90200110 LDS R2,0x110
0178 90300111 LDS R3,0x111
017A 1582 CP R24,R2
017B 0593 CPC R25,R3
017C F430 BCC 0x0183
(0161) {
(0162) //检测到动作标志赋值
(0163) global_operation_detected_flag=1;
017D E081 LDI R24,1
017E E090 LDI R25,0
017F 93900121 STS global_operation_detected_flag+1,R25
0181 93800120 STS global_operation_detected_flag,R24
(0164) }
(0165) // if(global_detect_trip[0]>2049)
(0166) // {
(0167) // 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))
(0168) // {
(0169) //检测到动作标志赋值
(0170) // global_operation_detected_flag=1;
(0171) // }
(0172) // }
(0173) // if(int16_temp1>2049)
(0174) // {
(0175) //检测到动作标志赋值
(0176) // global_operation_detected_flag=1;
(0177) // }
(0178) global_ad_counter++;
0183 91800126 LDS R24,global_ad_counter
0185 91900127 LDS R25,global_ad_counter+1
0187 9601 ADIW R24,1
0188 93900127 STS global_ad_counter+1,R25
018A 93800126 STS global_ad_counter,R24
(0179) }
(0180) //完成一次AD转换,将AD转换结束标志赋值
(0181) global_ad_finish_flag=0xFF;
018C EF8F LDI R24,0xFF
018D E090 LDI R25,0
018E 93900101 STS global_ad_finish_flag+1,R25
0190 93800100 STS global_ad_finish_flag,R24
0192 940E01B9 CALL pop_gset2
0194 9508 RET
(0182) //开中断
(0183) //sei();
(0184) }
(0185)
(0186) //主程序//////////////////////////////
(0187) int main()
(0188) {
(0189) //变量定义
(0190) unsigned int i;
(0191) //初始化和串口波特率设置
(0192) //INITIATION();
(0193) //PG3供测试用/////////////
(0194) //sbi(DDRG,3);
(0195) //cbi(PORTG,3);
(0196) //开中断
(0197) //sei();
(0198) //自动测试标志初始化
(0199) global_sample_mode_flag=0xFF;
_main:
i --> R16
0195 EF8F LDI R24,0xFF
0196 E090 LDI R25,0
0197 93900123 STS global_sample_mode_flag+1,R25
0199 93800122 STS global_sample_mode_flag,R24
(0200) //采集控制标志初始化
(0201) global_start_sample_flag=0xFF;
019B 93900125 STS global_start_sample_flag+1,R25
019D 93800124 STS global_start_sample_flag,R24
(0202) //串口接收控制变量初始化
(0203) global_flag_serie=0;
019F 2422 CLR R2
01A0 2433 CLR R3
01A1 92300129 STS global_flag_serie+1,R3
01A3 92200128 STS global_flag_serie,R2
(0204) //开串口接收中断
(0205) //UART_RXCINT_OPEN();
(0206) //延时
(0207) for(i=0;i<0xFF;i++)
01A5 2700 CLR R16
01A6 2711 CLR R17
01A7 C008 RJMP 0x01B0
(0208) {
(0209) //TIMER_BEGIN();
(0210) //等待定时器溢出,AD结束中断处理在等待过程中完成
(0211) while(!(TIFR&(1<<OCF1A))){;}
01A8 B626 IN R2,0x36
01A9 FE24 SBRS R2,4
01AA CFFD RJMP 0x01A8
(0212) TIFR|=1<<OCF1A;
01AB B786 IN R24,0x36
01AC 6180 ORI R24,0x10
01AD BF86 OUT 0x36,R24
01AE 5F0F SUBI R16,0xFF
01AF 4F1F SBCI R17,0xFF
01B0 3F0F CPI R16,0xFF
01B1 E0E0 LDI R30,0
01B2 071E CPC R17,R30
01B3 F3A0 BCS 0x01A8
(0213) //终止定时器
(0214) //TIMER_STOP();
(0215) }
(0216) //数据采集流程
(0217) while(1)
01B4 CFFF RJMP 0x01B4
(0218) {
(0219) /*
(0220) //检测动作开始标志清零
(0221) for(i=0;i<4;i++){global_detect_close[i]=0;}
(0222) for(i=0;i<4;i++){global_detect_trip[i]=0;}
(0223) //如果自动测试
(0224) if(global_sample_mode_flag==0x00)
(0225) {
(0226) //关串口接收中断
(0227) UART_RXCINT_CLOSE();
(0228) //开外部中断7(AD转换结束中断)
(0229) EXTERN_INTERRUPT_OPEN(7);
(0230) //检测采样
(0231) OPERATION_DETECTION();
(0232) //如果检测到有信号变化,向COUNTER发送开始采集命令
(0233) // sbi(UCSR0B,TXB8);//将TXB8置1
(0234) UART_DATA_BYTE_SEND(0x10);//发送数据采集命令
(0235) //开始采样
(0236) SAMPLE();
(0237) //关外部中断7
(0238) EXTERN_INTERRUPT_CLOSE(7);
(0239) //开串口接收中断,等待数据包传输命令
(0240) UART_RXCINT_OPEN();
(0241) //向主机发送采集结束命令0x33
(0242) UART_DATA_BYTE_SEND(0x33);
(0243) //自动测试标志复原
(0244) global_sample_mode_flag=0xFF;
(0245) }
(0246) //如果接收到开始采集命令
(0247) if(global_start_sample_flag==0x00)
(0248) {
(0249) //关串口接收中断
(0250) UART_RXCINT_CLOSE();
(0251) //开外部中断7(AD转换结束中断)
(0252) EXTERN_INTERRUPT_OPEN(7);
(0253) //采样
(0254) SAMPLE();
(0255) //关外部中断7
(0256) EXTERN_INTERRUPT_CLOSE(7);
(0257) //开串口接收中断,等待数据包传输命令
(0258) UART_RXCINT_OPEN();
(0259) //开始采集标志复原
(0260) global_start_sample_flag=0xFF;
(0261) }
(0262) */
(0263) }
(0264)
(0265) for(;;){;}
01B5 CFFF RJMP 0x01B5
(0266) return 0;
FILE: <library>
01B6 2700 CLR R16
01B7 2711 CLR R17
01B8 9508 RET
pop_gset2:
01B9 E0E2 LDI R30,2
01BA 940C01C8 JMP pop
push_gset5:
01BC 92FA ST R15,-Y
01BD 92EA ST R14,-Y
push_gset4:
01BE 92DA ST R13,-Y
01BF 92CA ST R12,-Y
push_gset3:
01C0 92BA ST R11,-Y
01C1 92AA ST R10,-Y
push_gset2:
01C2 937A ST R23,-Y
01C3 936A ST R22,-Y
push_gset1:
01C4 935A ST R21,-Y
01C5 934A ST R20,-Y
01C6 9508 RET
pop_gset1:
01C7 E0E1 LDI R30,1
pop:
01C8 9149 LD R20,Y+
01C9 9159 LD R21,Y+
01CA FDE0 SBRC R30,0
01CB 9508 RET
01CC 9169 LD R22,Y+
01CD 9179 LD R23,Y+
01CE FDE1 SBRC R30,1
01CF 9508 RET
01D0 90A9 LD R10,Y+
01D1 90B9 LD R11,Y+
01D2 FDE2 SBRC R30,2
01D3 9508 RET
01D4 90C9 LD R12,Y+
01D5 90D9 LD R13,Y+
01D6 FDE3 SBRC R30,3
01D7 9508 RET
01D8 90E9 LD R14,Y+
01D9 90F9 LD R15,Y+
01DA 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -