📄 main.lss
字号:
4e2: 80 91 56 00 lds r24, 0x0056
4e6: 80 61 ori r24, 0x10 ; 16
4e8: 80 93 56 00 sts 0x0056, r24
//终止定时器
TIMER_STOP();
4ec: 0e 94 e0 07 call 0xfc0
4f0: 89 81 ldd r24, Y+1 ; 0x01
4f2: 8f 5f subi r24, 0xFF ; 255
4f4: 89 83 std Y+1, r24 ; 0x01
4f6: e8 cf rjmp .-48 ; 0x4c8
}
//数据采集流程
while(1)
{
//检测动作开始标志清零
for(i=0;i<4;i++){global_detect_close[i]=0;}
4f8: 19 82 std Y+1, r1 ; 0x01
4fa: 89 81 ldd r24, Y+1 ; 0x01
4fc: 84 30 cpi r24, 0x04 ; 4
4fe: 08 f0 brcs .+2 ; 0x502
500: 0f c0 rjmp .+30 ; 0x520
502: 89 81 ldd r24, Y+1 ; 0x01
504: 28 2f mov r18, r24
506: 33 27 eor r19, r19
508: c9 01 movw r24, r18
50a: 82 0f add r24, r18
50c: 93 1f adc r25, r19
50e: fc 01 movw r30, r24
510: e6 5e subi r30, 0xE6 ; 230
512: fe 4f sbci r31, 0xFE ; 254
514: 10 82 st Z, r1
516: 11 82 std Z+1, r1 ; 0x01
518: 89 81 ldd r24, Y+1 ; 0x01
51a: 8f 5f subi r24, 0xFF ; 255
51c: 89 83 std Y+1, r24 ; 0x01
51e: ed cf rjmp .-38 ; 0x4fa
for(i=0;i<4;i++){global_detect_trip[i]=0;}
520: 19 82 std Y+1, r1 ; 0x01
522: 89 81 ldd r24, Y+1 ; 0x01
524: 84 30 cpi r24, 0x04 ; 4
526: 08 f0 brcs .+2 ; 0x52a
528: 0f c0 rjmp .+30 ; 0x548
52a: 89 81 ldd r24, Y+1 ; 0x01
52c: 28 2f mov r18, r24
52e: 33 27 eor r19, r19
530: c9 01 movw r24, r18
532: 82 0f add r24, r18
534: 93 1f adc r25, r19
536: fc 01 movw r30, r24
538: ec 5f subi r30, 0xFC ; 252
53a: fe 4f sbci r31, 0xFE ; 254
53c: 10 82 st Z, r1
53e: 11 82 std Z+1, r1 ; 0x01
540: 89 81 ldd r24, Y+1 ; 0x01
542: 8f 5f subi r24, 0xFF ; 255
544: 89 83 std Y+1, r24 ; 0x01
546: ed cf rjmp .-38 ; 0x522
//如果自动测试
if(global_sample_mode_flag==0x00)
548: 80 91 14 01 lds r24, 0x0114
54c: 88 23 and r24, r24
54e: e1 f4 brne .+56 ; 0x588
{
//关串口接收中断
UART_RXCINT_CLOSE();
550: 0e 94 44 06 call 0xc88
//开外部中断7(AD转换结束中断)
EXTERN_INTERRUPT_OPEN(7);
554: 87 e0 ldi r24, 0x07 ; 7
556: 0e 94 55 03 call 0x6aa
//检测采样
OPERATION_DETECTION();
55a: 0e 94 67 08 call 0x10ce
//如果检测到有信号变化,向COUNTER发送开始采集命令
sbi(UCSR0B,TXB8);//将TXB8置1
55e: 80 91 2a 00 lds r24, 0x002A
562: 81 60 ori r24, 0x01 ; 1
564: 80 93 2a 00 sts 0x002A, r24
UART_DATA_BYTE_SEND(0x10);//发送数据采集命令
568: 80 e1 ldi r24, 0x10 ; 16
56a: 0e 94 51 06 call 0xca2
//开始采样
SAMPLE();
56e: 0e 94 ed 07 call 0xfda
//关外部中断7
EXTERN_INTERRUPT_CLOSE(7);
572: 87 e0 ldi r24, 0x07 ; 7
574: 0e 94 83 03 call 0x706
//开串口接收中断,等待数据包传输命令
UART_RXCINT_OPEN();
578: 0e 94 38 06 call 0xc70
//向主机发送采集结束命令0x33
UART_DATA_BYTE_SEND(0x33);
57c: 83 e3 ldi r24, 0x33 ; 51
57e: 0e 94 51 06 call 0xca2
//自动测试标志复原
global_sample_mode_flag=0xFF;
582: 8f ef ldi r24, 0xFF ; 255
584: 80 93 14 01 sts 0x0114, r24
}
//如果接收到开始采集命令
if(global_start_sample_flag==0x00)
588: 80 91 17 01 lds r24, 0x0117
58c: 88 23 and r24, r24
58e: 09 f0 breq .+2 ; 0x592
590: b3 cf rjmp .-154 ; 0x4f8
{
//关串口接收中断
UART_RXCINT_CLOSE();
592: 0e 94 44 06 call 0xc88
//开外部中断7(AD转换结束中断)
EXTERN_INTERRUPT_OPEN(7);
596: 87 e0 ldi r24, 0x07 ; 7
598: 0e 94 55 03 call 0x6aa
//采样
SAMPLE();
59c: 0e 94 ed 07 call 0xfda
//关外部中断7
EXTERN_INTERRUPT_CLOSE(7);
5a0: 87 e0 ldi r24, 0x07 ; 7
5a2: 0e 94 83 03 call 0x706
//开串口接收中断,等待数据包传输命令
UART_RXCINT_OPEN();
5a6: 0e 94 38 06 call 0xc70
//开始采集标志复原
global_start_sample_flag=0xFF;
5aa: 8f ef ldi r24, 0xFF ; 255
5ac: 80 93 17 01 sts 0x0117, r24
5b0: a3 cf rjmp .-186 ; 0x4f8
000005b2 <INITIATION>:
extern uint16_t global_voltage_counter;//操作电压地址计数器
extern uint8_t global_ad_finish_flag;//AD转换结束标志
//AD板子的初始化,包括端口方向,串口初始化等
void INITIATION(void)
{
5b2: cf 93 push r28
5b4: df 93 push r29
5b6: cd b7 in r28, 0x3d ; 61
5b8: de b7 in r29, 0x3e ; 62
DDRC=0xFF;//端口C输出
5ba: 8f ef ldi r24, 0xFF ; 255
5bc: 80 93 34 00 sts 0x0034, r24
PORTC=0xFF;
5c0: 8f ef ldi r24, 0xFF ; 255
5c2: 80 93 35 00 sts 0x0035, r24
DDRF|=0x0F;//端口F输出
5c6: 80 91 61 00 lds r24, 0x0061
5ca: 8f 60 ori r24, 0x0F ; 15
5cc: 80 93 61 00 sts 0x0061, r24
sbi(DDRB,2);//CONVST初始化,输出
5d0: 80 91 37 00 lds r24, 0x0037
5d4: 84 60 ori r24, 0x04 ; 4
5d6: 80 93 37 00 sts 0x0037, r24
sbi(PORTB,2);
5da: 80 91 38 00 lds r24, 0x0038
5de: 84 60 ori r24, 0x04 ; 4
5e0: 80 93 38 00 sts 0x0038, r24
sbi(DDRG,0);//WR初始化,输出1
5e4: 80 91 64 00 lds r24, 0x0064
5e8: 81 60 ori r24, 0x01 ; 1
5ea: 80 93 64 00 sts 0x0064, r24
sbi(PORTG,0);
5ee: 80 91 65 00 lds r24, 0x0065
5f2: 81 60 ori r24, 0x01 ; 1
5f4: 80 93 65 00 sts 0x0065, r24
sbi(DDRG,1);//RD初始化,输出1
5f8: 80 91 64 00 lds r24, 0x0064
5fc: 82 60 ori r24, 0x02 ; 2
5fe: 80 93 64 00 sts 0x0064, r24
sbi(PORTG,1);
602: 80 91 65 00 lds r24, 0x0065
606: 82 60 ori r24, 0x02 ; 2
608: 80 93 65 00 sts 0x0065, r24
sbi(DDRG,2);//ALE初始化,输出1
60c: 80 91 64 00 lds r24, 0x0064
610: 84 60 ori r24, 0x04 ; 4
612: 80 93 64 00 sts 0x0064, r24
sbi(PORTG,2);
616: 80 91 65 00 lds r24, 0x0065
61a: 84 60 ori r24, 0x04 ; 4
61c: 80 93 65 00 sts 0x0065, r24
sbi(DDRD,5);//CS_ADC初始化,输出1
620: 80 91 31 00 lds r24, 0x0031
624: 80 62 ori r24, 0x20 ; 32
626: 80 93 31 00 sts 0x0031, r24
sbi(PORTD,5);
62a: 80 91 32 00 lds r24, 0x0032
62e: 80 62 ori r24, 0x20 ; 32
630: 80 93 32 00 sts 0x0032, r24
sbi(DDRD,6);//CS_RAM初始化,输出1
634: 80 91 31 00 lds r24, 0x0031
638: 80 64 ori r24, 0x40 ; 64
63a: 80 93 31 00 sts 0x0031, r24
sbi(PORTD,6);
63e: 80 91 32 00 lds r24, 0x0032
642: 80 64 ori r24, 0x40 ; 64
644: 80 93 32 00 sts 0x0032, r24
UART_SETTING(19200,7372800);//串口初始化
648: 40 e0 ldi r20, 0x00 ; 0
64a: 50 e8 ldi r21, 0x80 ; 128
64c: 60 e7 ldi r22, 0x70 ; 112
64e: 70 e0 ldi r23, 0x00 ; 0
650: 80 e0 ldi r24, 0x00 ; 0
652: 9b e4 ldi r25, 0x4B ; 75
654: 0e 94 62 05 call 0xac4
sbi(DDRE,2);//串口接收控制
658: 80 91 22 00 lds r24, 0x0022
65c: 84 60 ori r24, 0x04 ; 4
65e: 80 93 22 00 sts 0x0022, r24
cbi(PORTE,2);
662: 80 91 23 00 lds r24, 0x0023
666: 8b 7f andi r24, 0xFB ; 251
668: 80 93 23 00 sts 0x0023, r24
}
66c: df 91 pop r29
66e: cf 91 pop r28
670: 08 95 ret
00000672 <delay_ms>:
//延时程序
void delay_ms(void)
{
672: cf 93 push r28
674: df 93 push r29
676: cd b7 in r28, 0x3d ; 61
678: de b7 in r29, 0x3e ; 62
67a: 21 97 sbiw r28, 0x01 ; 1
67c: 0f b6 in r0, 0x3f ; 63
67e: f8 94 cli
680: de bf out 0x3e, r29 ; 62
682: 0f be out 0x3f, r0 ; 63
684: cd bf out 0x3d, r28 ; 61
uint8_t i;
for(i=0;i<0x01;i++){;}
686: 19 82 std Y+1, r1 ; 0x01
688: 89 81 ldd r24, Y+1 ; 0x01
68a: 88 23 and r24, r24
68c: 09 f0 breq .+2 ; 0x690
68e: 04 c0 rjmp .+8 ; 0x698
690: 89 81 ldd r24, Y+1 ; 0x01
692: 8f 5f subi r24, 0xFF ; 255
694: 89 83 std Y+1, r24 ; 0x01
696: f8 cf rjmp .-16 ; 0x688
}
698: 21 96 adiw r28, 0x01 ; 1
69a: 0f b6 in r0, 0x3f ; 63
69c: f8 94 cli
69e: de bf out 0x3e, r29 ; 62
6a0: 0f be out 0x3f, r0 ; 63
6a2: cd bf out 0x3d, r28 ; 61
6a4: df 91 pop r29
6a6: cf 91 pop r28
6a8: 08 95 ret
000006aa <EXTERN_INTERRUPT_OPEN>:
//开外部中断
void EXTERN_INTERRUPT_OPEN(uint8_t index)
{
6aa: cf 93 push r28
6ac: df 93 push r29
6ae: cd b7 in r28, 0x3d ; 61
6b0: de b7 in r29, 0x3e ; 62
6b2: 21 97 sbiw r28, 0x01 ; 1
6b4: 0f b6 in r0, 0x3f ; 63
6b6: f8 94 cli
6b8: de bf out 0x3e, r29 ; 62
6ba: 0f be out 0x3f, r0 ; 63
6bc: cd bf out 0x3d, r28 ; 61
6be: 89 83 std Y+1, r24 ; 0x01
EICRA=0xAA;
6c0: 8a ea ldi r24, 0xAA ; 170
6c2: 80 93 6a 00 sts 0x006A, r24
EICRB=0xAA;//设置下降沿触发
6c6: 8a ea ldi r24, 0xAA ; 170
6c8: 80 93 5a 00 sts 0x005A, r24
sbi(EIMSK,index);
6cc: 89 81 ldd r24, Y+1 ; 0x01
6ce: 28 2f mov r18, r24
6d0: 33 27 eor r19, r19
6d2: 81 e0 ldi r24, 0x01 ; 1
6d4: 90 e0 ldi r25, 0x00 ; 0
6d6: 02 c0 rjmp .+4 ; 0x6dc
6d8: 88 0f add r24, r24
6da: 99 1f adc r25, r25
6dc: 2a 95 dec r18
6de: e2 f7 brpl .-8 ; 0x6d8
6e0: 20 91 59 00 lds r18, 0x0059
6e4: 82 2b or r24, r18
6e6: 80 93 59 00 sts 0x0059, r24
sbi(SREG,7);//将寄存器SREG的“I”置1
6ea: 80 91 5f 00 lds r24, 0x005F
6ee: 80 68 ori r24, 0x80 ; 128
6f0: 80 93 5f 00 sts 0x005F, r24
}
6f4: 21 96 adiw r28, 0x01 ; 1
6f6: 0f b6 in r0, 0x3f ; 63
6f8: f8 94 cli
6fa: de bf out 0x3e, r29 ; 62
6fc: 0f be out 0x3f, r0 ; 63
6fe: cd bf out 0x3d, r28 ; 61
700: df 91 pop r29
702: cf 91 pop r28
704: 08 95 ret
00000706 <EXTERN_INTERRUPT_CLOSE>:
//关外部中断
void EXTERN_INTERRUPT_CLOSE(uint8_t index)
{
706: cf 93 push r28
708: df 93 push r29
70a: cd b7 in r28, 0x3d ; 61
70c: de b7 in r29, 0x3e ; 62
70e: 21 97 sbiw r28, 0x01 ; 1
710: 0f b6 in r0, 0x3f ; 63
712: f8 94 cli
714: de bf out 0x3e, r29 ; 62
716: 0f be out 0x3f, r0 ; 63
718: cd bf out 0x3d, r28 ; 61
71a: 89 83 std Y+1, r24 ; 0x01
cbi(EIMSK,index);
71c: 89 81 ldd r24, Y+1 ; 0x01
71e: 28 2f mov r18, r24
720: 33 27 eor r19, r19
722: 81 e0 ldi r24, 0x01 ; 1
724: 90 e0 ldi r25, 0x00 ; 0
726: 02 c0 rjmp .+4 ; 0x72c
728: 88 0f add r24, r24
72a: 99 1f adc r25, r25
72c: 2a 95 dec r18
72e: e2 f7 brpl .-8 ; 0x728
730: 98 2f mov r25, r24
732: 90 95 com r25
734: 80 91 59 00 lds r24, 0x0059
738: 89 23 and r24, r25
73a: 80 93 59 00 sts 0x0059, r24
// sbi(SREG,7);//将寄存器SREG的“I”置1
}
73e: 21 96 adiw r28, 0x01 ; 1
740: 0f b6 in r0, 0x3f ; 63
742: f8 94 cli
744: de bf out 0x3e, r29 ; 62
746: 0f be out 0x3f, r0 ; 63
748: cd bf out 0x3d, r28 ; 61
74a: df 91 pop r29
74c: cf 91 pop r28
74e: 08 95 ret
00000750 <SRAM_1M_8_WRITE>:
//SRAM写操作
void SRAM_1M_8_WRITE(uint32_t address,uint8_t data)
{
750: cf 93 push r28
752: df 93 push r29
754: cd b7 in r28, 0x3d ; 61
756: de b7 in r29, 0x3e ; 62
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -