⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xunxiandongzuo8.s

📁 mega8 对电机控制。采用mega8对电机控制。然后再用mega16 来控制mega8
💻 S
📖 第 1 页 / 共 3 页
字号:
	.module xunxiandongzuo8.c
	.area data(ram, con, rel)
_num_H::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Main8.h
	.dbsym e num_H _num_H c
_Num_Speed::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Main8.h
	.dbsym e Num_Speed _Num_Speed I
_PID_choice::
	.blkb 1
	.area idata
	.byte 255
	.area data(ram, con, rel)
	.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Main8.h
	.dbsym e PID_choice _PID_choice c
_now_dir::
	.blkb 1
	.area idata
	.byte 129
	.area data(ram, con, rel)
	.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Main8.h
	.dbsym e now_dir _now_dir c
_pre_dir::
	.blkb 1
	.area idata
	.byte 129
	.area data(ram, con, rel)
	.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Main8.h
	.dbsym e pre_dir _pre_dir c
	.area text(rom, con, rel)
	.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Main8.h
	.dbfile E:\李斐机器人\xunxianjiadongzuo\8/L_PID.c
	.dbfunc e L_PIDInit _L_PIDInit fV
	.even
_L_PIDInit::
	rcall push_gset2
	.dbline -1
	.dbline 67
; //ICC-AVR application builder : 2005-12-22 22:30:20
; // Target : M8
; // Crystal: 8.0000Mhz
; #include <iom8v.h>
; #include <macros.h>
; 
; #include "Main8.h"
; 
; 
; #include "L_PID.c"
; #include "Slave_SPI.c"
; #include "TIMEDELAY8.C"
; 
; 
; void port_init(void)
; {
;  PORTB = 0x00;
;  DDRB  = 0x00;
;  PORTC =  0x00; //m103 output only
;  DDRC  = 0x00;
;  PORTD =  0x00;
;  DDRD  = 0x00;
;  
;  PORTB |= 0x02;	//OC1A output ,high level
;  DDRB |= 0x02;	
;  
;  PORTC &= ~0x02;
;  DDRC |= 0x02;
;  
;  PORTC |= 0x08;	//PC3 输出,控制电机方向,1->正转,0->反转 0000 1000
;  DDRC |= 0x38; //PC4,PC5输出
;  
;  PORTD |= 0X0C;		//INT0,INT1设置为输入,PD2,PD3 
;  DDRD  &= ~0X0C;	
;  
;  PORTD &=~0x80;	//PD7置低 
;  DDRD |= 0x80;	
;  
;  PORTD &=~0x40;//PD6置低
;  DDRD |= 0x40;	
;  
;  PORTD |= 0x10;	//T0设为带上拉输入,码盘脉冲输入
;  DDRD &= ~0x10; 
; }
; 
; //TIMER0 initialize - prescale:falling edge
; void timer0_init(void)
; {
;  TCCR0 = 0x00; //stopvv
;  TCNT0 = 0x00 /*INVALID SETTING*/; //set count
;  TCCR0 = 0x06; //start timer
; }
; 
; #pragma interrupt_handler timer0_ovf_isr:10
; void timer0_ovf_isr(void)
; {
; 	num_H++;			//低字节逸溢出,高字节加一
; }
; 
; //TIMER1 initialize - prescale:1
; // WGM: 7) PWM 10bit fast, TOP=0x03FF
; // desired value: 7.813KHz
; // actual value:  7.813KHz (0.0%)
; void timer1_init(void)
; {
;  TCCR1B = 0x00; //stop
;  TCNT1H = 0xFC; //setup
	.dbline 68
;  TCNT1L = 0x01;
	.dbline 69
;  OCR1AH = 0x00;		//初始占空比为0,停机
	clr R2
	clr R3
	sts _L_sPID+1,R3
	sts _L_sPID,R2
	sts _L_sPID+2+1,R3
	sts _L_sPID+2,R2
	.dbline 71
;  OCR1AL = 0x00;
;  OCR1BH = 0x00;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _L_sPID+4+1,R21
	sts _L_sPID+4,R20
	sts _L_sPID+4+2+1,R23
	sts _L_sPID+4+2,R22
	.dbline 72
;  OCR1BL = 0x00;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _L_sPID+8+1,R21
	sts _L_sPID+8,R20
	sts _L_sPID+8+2+1,R23
	sts _L_sPID+8+2,R22
	.dbline 74
;  ICR1H  = 0x03;
;  ICR1L  = 0xFF;
	sts _L_sPID+12+1,R3
	sts _L_sPID+12,R2
	.dbline 75
;  TCCR1A = 0xC3;		//OC1A输出PWM波形
	sts _L_sPID+14+1,R3
	sts _L_sPID+14,R2
	.dbline 77
;  TCCR1B = 0x09; //start Timer
; }
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _L_sPID+16+1,R21
	sts _L_sPID+16,R20
	sts _L_sPID+16+2+1,R23
	sts _L_sPID+16+2,R22
	.dbline 78
; 
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _L_sPID+20+1,R21
	sts _L_sPID+20,R20
	sts _L_sPID+20+2+1,R23
	sts _L_sPID+20+2,R22
	.dbline 80
; 
; /*INT0下降沿触发,	INT1上升沿触发,
	ldi R24,690
	ldi R25,2
	sts _L_sPID+24+1,R25
	sts _L_sPID+24,R24
	.dbline 81
; INT0触发时方向电平为1,表正转,INT1触发时方向电平为0,表正转,*/
	ldi R24,90
	ldi R25,0
	sts _L_sPID+26+1,R25
	sts _L_sPID+26,R24
	.dbline 82
; #pragma interrupt_handler int0_isr:2
	ldi R24,30
	sts _L_sPID+28+1,R25
	sts _L_sPID+28,R24
	.dbline 84
; void int0_isr(void)
; {
	sts _L_sPID+30+1,R25
	sts _L_sPID+30,R24
	.dbline 85
;  	//external interupt on INT0		Dir GO_AHEAD-> GO_BACK, 存贮并清零
	ldi R24,10
	sts _L_sPID+32+1,R25
	sts _L_sPID+32,R24
	.dbline 86
;  	unsigned int temp_int = 0x0000;
	ldi R24,100
	sts _L_sPID+34+1,R25
	sts _L_sPID+34,R24
	.dbline 88
;  	unsigned char temp_char = 0x00;
;  	
	ldi R24,200
	sts _L_sPID+36+1,R25
	sts _L_sPID+36,R24
	.dbline 89
;  	temp_char = TCNT0;		//读取脉冲计数低字节
	ldi R24,1000
	ldi R25,3
	sts _L_sPID+38+1,R25
	sts _L_sPID+38,R24
	.dbline 91
;  	TCNT0=0;
;  	
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _L_sPID+40+1,R21
	sts _L_sPID+40,R20
	sts _L_sPID+40+2+1,R23
	sts _L_sPID+40+2,R22
	.dbline -2
	.dbline 92
;  	temp_int = num_H;		//读取脉冲计数高字节
L1:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e v_PIDCalc _v_PIDCalc fI
;       dd_error -> y+8
;        d_error -> y+4
;          error -> y+0
;             pp -> R10,R11
	.even
_v_PIDCalc::
	rcall push_gset3
	movw R10,R16
	sbiw R28,12
	.dbline -1
	.dbline 98
;  	num_H = 0;
;  	
;  	temp_int <<=8;			//计算脉冲数
;  	temp_int += temp_char;
;  	
; 	Num_Speed += temp_int;		//累计脉冲数
	.dbline 101
; }
; 
; 
	.dbline 102
; #pragma interrupt_handler int1_isr:3
	.dbline 103
; void int1_isr(void)
	.dbline 105
; {
;  	//external interupt on INT0		//Dir GO_BACK -> GO_AHEAD, 存贮并清零
	movw R30,R10
	ldd R2,z+2
	ldd R3,z+3
	movw R30,R10
	ldd R4,z+0
	ldd R5,z+1
	sub R4,R2
	sbc R5,R3
	movw R2,R4
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	movw R24,R10
	adiw R24,12
	movw R30,R24
	ldd R4,z+0
	ldd R5,z+1
	clr R6
	sbrc R5,7
	com R6
	clr R7
	sbrc R6,7
	com R7
	movw R30,R28
	ldd R20,z+0
	ldd R21,z+1
	ldd R22,z+2
	ldd R23,z+3
	sub R20,R4
	sbc R21,R5
	sbc R22,R6
	sbc R23,R7
	movw R30,R28
	std z+4,R20
	std z+5,R21
	std z+6,R22
	std z+7,R23
	movw R30,R10
	ldd R4,z+14
	ldd R5,z+15
	clr R6
	sbrc R5,7
	com R6
	clr R7
	sbrc R6,7
	com R7
	movw R30,R28
	ldd R20,z+4
	ldd R21,z+5
	ldd R22,z+6
	ldd R23,z+7
	sub R20,R4
	sbc R21,R5
	sbc R22,R6
	sbc R23,R7
	movw R30,R28
	std z+8,R20
	std z+9,R21
	std z+10,R22
	std z+11,R23
	movw R30,R28
	ldd R4,z+0
	ldd R5,z+1
	movw R30,R24
	std z+1,R5
	std z+0,R4
	.dbline 106
;  	unsigned int temp_int = 0x0000;
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	movw R30,R10
	std z+15,R3
	std z+14,R2
	.dbline 108
;  	unsigned char temp_char = 0x00;
;  	
	ldi R20,8
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brge L19
	ldi R20,248
	ldi R21,255
	ldi R22,255
	ldi R23,255
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brge L19
	.dbline 109
;  	temp_char = TCNT0;		//读取脉冲计数低字节
	.dbline 110
;  	TCNT0=0;
	rjmp L20
L19:
	.dbline 112
;  	
;  	temp_int = num_H;		//读取脉冲计数高字节
	movw R24,R10
	adiw R24,40
	movw R2,R24
	movw R30,R28
	ldd R4,z+0
	ldd R5,z+1
	ldd R6,z+2
	ldd R7,z+3
	movw R30,R10
	ldd R20,z+26
	ldd R21,z+27
	clr R22
	sbrc R21,7
	com R22
	clr R23
	sbrc R22,7
	com R23
	st -y,R7
	st -y,R6
	st -y,R5
	st -y,R4
	movw R16,R20
	movw R18,R22
	rcall empy32s
	movw R4,R16
	movw R6,R18
	movw R30,R28
	ldd R20,z+4
	ldd R21,z+5
	ldd R22,z+6
	ldd R23,z+7
	movw R30,R10
	ldd R24,z+24
	ldd R25,z+25
	clr R26
	sbrc R25,7
	com R26
	clr R27
	sbrc R26,7
	com R27
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	movw R16,R24
	movw R18,R26
	rcall empy32s
	movw R20,R16
	movw R22,R18
	add R20,R4
	adc R21,R5
	adc R22,R6
	adc R23,R7
	movw R30,R28
	ldd R4,z+8
	ldd R5,z+9
	ldd R6,z+10
	ldd R7,z+11
	movw R30,R10
	ldd R24,z+28
	ldd R25,z+29
	clr R26
	sbrc R25,7
	com R26
	clr R27
	sbrc R26,7
	com R27
	st -y,R7
	st -y,R6
	st -y,R5
	st -y,R4
	movw R16,R24
	movw R18,R26
	rcall empy32s
	add R20,R16
	adc R21,R17
	adc R22,R18
	adc R23,R19
	movw R30,R2
	ldd R4,z+0
	ldd R5,z+1
	ldd R6,z+2
	ldd R7,z+3
	add R4,R20
	adc R5,R21
	adc R6,R22
	adc R7,R23
	std z+0,R4
	std z+1,R5
	std z+2,R6
	std z+3,R7
L20:
	.dbline 114
;  	num_H = 0;
;  	
	ldi R20,0
	ldi R21,252
	ldi R22,15
	ldi R23,0
	movw R30,R10
	ldd R2,z+40
	ldd R3,z+41
	ldd R4,z+42
	ldd R5,z+43
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brlt L21
	.dbline 115
;  	temp_int <<=8;			//计算脉冲数
	ldi R20,0
	ldi R21,252
	ldi R22,15
	ldi R23,0
	movw R30,R10
	std z+40,R20
	std z+41,R21
	std z+42,R22
	std z+43,R23
	rjmp L22
L21:
	.dbline 117
;  	temp_int += temp_char;
;  	
	ldi R20,0
	ldi R21,4
	ldi R22,240
	ldi R23,255
	movw R30,R10
	ldd R2,z+40
	ldd R3,z+41
	ldd R4,z+42
	ldd R5,z+43
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brlt L23
	.dbline 118
; 	Num_Speed -= temp_int;		//累计脉冲数	
	ldi R20,0
	ldi R21,4
	ldi R22,240
	ldi R23,255
	movw R30,R10
	std z+40,R20
	std z+41,R21
	std z+42,R22
	std z+43,R23
L23:
L22:
	.dbline 120
; }
; 
	ldi R24,10
	ldi R25,0
	movw R30,R10
	ldd R2,z+40
	ldd R3,z+41
	ldd R4,z+42
	ldd R5,z+43
	st -y,R24
	movw R16,R2
	movw R18,R4
	rcall asr32
	.dbline -2
L18:
	adiw R28,12
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym l dd_error 8 L
	.dbsym l d_error 4 L
	.dbsym l error 0 L
	.dbsym r pp 10 pX
	.dbend
	.area data(ram, con, rel)
	.dbfile E:\李斐机器人\xunxianjiadongzuo\8/L_PID.c
L26:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\李斐机器人\xunxianjiadongzuo\8/L_PID.c
	.area text(rom, con, rel)
	.dbfile E:\李斐机器人\xunxianjiadongzuo\8/L_PID.c
	.dbfunc e s_PIDCalc _s_PIDCalc fI
	.dbsym s flag L26 c
;      temp_comp -> y+8
;        d_error -> y+4
;          error -> y+0
;             pp -> R10,R11
	.even
_s_PIDCalc::
	rcall push_gset3
	movw R10,R16
	sbiw R28,12
	.dbline -1
	.dbline 128
; 
; //TIMER2 initialize - prescale:1024
; // WGM: Normal
; // desired value: 20mSec
; // actual value: 19.968mSec (0.2%)
; void timer2_init(void)
; {
;  TCCR2 = 0x00; //stop
	.dbline 133
;  TCNT2 = 0x64; //setup
;  
;  TCCR2 = 0x07; //start
; }
; 
	movw R24,R10
	adiw R24,8
	movw R30,R10
	ldd R4,z+2
	ldd R5,z+3
	clr R6
	sbrc R5,7
	com R6
	clr R7
	sbrc R6,7
	com R7
	movw R30,R24
	ldd R20,z+0
	ldd R21,z+1
	ldd R22,z+2
	ldd R23,z+3
	add R20,R4
	adc R21,R5
	adc R22,R6
	adc R23,R7
	std z+0,R20
	std z+1,R21
	std z+2,R22
	std z+3,R23
	.dbline 134
; /*						定时进行PID运算				*/
	.dbline 136
; #define Dir ( (PIND)&(1<<2) )		//方向输入,“非零”为GO_AHEAD,“0”为GO_BACK
; 
	movw R30,R10
	ldd R2,z+8
	ldd R3,z+9
	ldd R4,z+10
	ldd R5,z+11
	movw R30,R10
	ldd R6,z+4
	ldd R7,z+5
	ldd R8,z+6
	ldd R9,z+7
	sub R6,R2
	sbc R7,R3
	sbc R8,R4
	sbc R9,R5
	movw R30,R28
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brge L27
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brge L27
	.dbline 137
; #pragma interrupt_handler timer2_ovf_isr:5
	.dbline 139
; void timer2_ovf_isr(void)
; {
	rjmp L28
L27:
	.dbline 141
; 	unsigned int temp_int = 0x0000;
;  	unsigned char temp_char = 0x00;
	.dbline 142
; 	signed int temp_sint=0;
	.dbline 144
; 
;  	TCNT2 = 0x64; //reload counter value
	movw R30,R10
	ldd R2,z+16
	ldd R3,z+17
	ldd R4,z+18
	ldd R5,z+19
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	sub R6,R2
	sbc R7,R3
	sbc R8,R4
	sbc R9,R5
	movw R30,R28
	std z+4,R6
	std z+5,R7
	std z+6,R8
	std z+7,R9
	movw R24,R10
	adiw R24,20
	movw R30,R28
	ldd R4,z+0
	ldd R5,z+1
	ldd R6,z+2
	ldd R7,z+3
	movw R30,R24
	ldd R20,z+0
	ldd R21,z+1
	ldd R22,z+2
	ldd R23,z+3
	add R20,R4
	adc R21,R5
	adc R22,R6
	adc R23,R7
	std z+0,R20
	std z+1,R21
	std z+2,R22
	std z+3,R23
	.dbline 145
; 	
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R10
	std z+16,R2
	std z+17,R3
	std z+18,R4
	std z+19,R5
	.dbline 147
;  	SEI();
; 	
	ldi R20,160
	ldi R21,134
	ldi R22,1
	ldi R23,0
	movw R30,R10
	ldd R2,z+20
	ldd R3,z+21
	ldd R4,z+22
	ldd R5,z+23
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brge L29
	.dbline 148
; 	temp_char = TCNT0;		//读取脉冲计数低字节
	ldi R20,160
	ldi R21,134
	ldi R22,1
	ldi R23,0
	movw R30,R10
	std z+20,R20
	std z+21,R21
	std z+22,R22
	std z+23,R23
	rjmp L30
L29:
	.dbline 149
;  	TCNT0=0;
	ldi R20,96
	ldi R21,121
	ldi R22,254
	ldi R23,255
	movw R30,R10
	ldd R2,z+20
	ldd R3,z+21
	ldd R4,z+22
	ldd R5,z+23
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brge L31
	.dbline 150
;  	
	ldi R20,96
	ldi R21,121
	ldi R22,254
	ldi R23,255
	movw R30,R10
	std z+20,R20
	std z+21,R21
	std z+22,R22
	std z+23,R23
	rjmp L32
L31:
	.dbline 151
;  	temp_int = num_H;		//读取脉冲计数高字节
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R10
	ldd R2,z+20
	ldd R3,z+21
	ldd R4,z+22
	ldd R5,z+23
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brge L33
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brge L33
	.dbline 152
;  	num_H = 0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R10
	std z+20,R20
	std z+21,R21
	std z+22,R22
	std z+23,R23
	rjmp L34
L33:
	.dbline 153
;  	
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R10
	ldd R2,z+20
	ldd R3,z+21
	ldd R4,z+22
	ldd R5,z+23
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brge L35
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brge L35
	.dbline 154
;  	temp_int <<=8;			//计算脉冲数
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R10
	std z+20,R20
	std z+21,R21
	std z+22,R22
	std z+23,R23
L35:
L34:
L32:
L30:
	.dbline 156
;  	temp_int += temp_char;
; 	
	movw R30,R10
	ldd R2,z+20
	ldd R3,z+21
	ldd R4,z+22
	ldd R5,z+23
	movw R30,R10
	ldd R6,z+32
	ldd R7,z+33
	clr R8
	sbrc R7,7
	com R8
	clr R9
	sbrc R8,7
	com R9
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R6
	movw R18,R8
	rcall empy32s
	movw R2,R16
	movw R4,R18
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	movw R30,R10
	ldd R20,z+30
	ldd R21,z+31
	clr R22
	sbrc R21,7
	com R22
	clr R23
	sbrc R22,7
	com R23
	st -y,R9
	st -y,R8
	st -y,R7
	st -y,R6
	movw R16,R20
	movw R18,R22
	rcall empy32s
	movw R6,R16
	movw R8,R18
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	movw R30,R10
	ldd R20,z+34
	ldd R21,z+35
	clr R22
	sbrc R21,7
	com R22
	clr R23
	sbrc R22,7
	com R23
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	rcall empy32s
	add R6,R16

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -