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

📄 main.s

📁 一款挂面机的自动化控制源程序
💻 S
📖 第 1 页 / 共 5 页
字号:
;       if (P_speed<set_speed)    // 如果小于设定速度,则减少触发时间     
	lds R4,_P_speed+2
	lds R5,_P_speed+2+1
	lds R2,_P_speed
	lds R3,_P_speed+1
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	lds R4,_set_speed+2
	lds R5,_set_speed+2+1
	lds R2,_set_speed
	lds R3,_set_speed+1
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	xcall cmp32f
	brge L243
	.dbline 420
;          {
	.dbline 421
;          if (dj_fangxi==1)       
	lds R24,_dj_fangxi
	cpi R24,1
	brne L245
	.dbline 422
;             {
	.dbline 423
;             time0_jsq=time0_jsq-tmp;
	mov R2,R12
	clr R3
	sub R10,R2
	sbc R11,R3
	.dbline 424
;             }
	xjmp L229
L245:
	.dbline 426
;          else
;             { 
	.dbline 427
;             time0_jsq=time0_jsq-tmp;   
	mov R2,R12
	clr R3
	sub R10,R2
	sbc R11,R3
	.dbline 428
;             dj_jibie++; 
	lds R24,_dj_jibie
	subi R24,255    ; addi 1
	sts _dj_jibie,R24
	.dbline 429
;             dj_fangxi=1;
	ldi R24,1
	sts _dj_fangxi,R24
	.dbline 430
;             }
	.dbline 431
;          }
	xjmp L229
L243:
	.dbline 433
;       else       //反之,则增大触发时间
;          { 
	.dbline 434
;          if (dj_fangxi==1)
	lds R24,_dj_fangxi
	cpi R24,1
	brne L247
	.dbline 435
;             { 
	.dbline 436
;             time0_jsq=time0_jsq+tmp;
	mov R2,R12
	clr R3
	add R10,R2
	adc R11,R3
	.dbline 437
;             dj_jibie++;
	lds R24,_dj_jibie
	subi R24,255    ; addi 1
	sts _dj_jibie,R24
	.dbline 438
;             dj_fangxi=0;
	clr R2
	sts _dj_fangxi,R2
	.dbline 439
;             }
	xjmp L229
L247:
	.dbline 441
;          else
;             {
	.dbline 442
;             time0_jsq=time0_jsq+tmp;
	mov R2,R12
	clr R3
	add R10,R2
	adc R11,R3
	.dbline 443
;             }
	.dbline 444
;          }
	.dbline 445
;       }
	xjmp L229
L228:
	.dbline 447
;    else
;       {
	.dbline 448
;       dj_jibie=0; 
	clr R2
	sts _dj_jibie,R2
	.dbline 449
;       dj_fangxi=0;
	sts _dj_fangxi,R2
	.dbline 450
;       }
L229:
	.dbline 451
;    pre_jsq=time0_jsq;
	sts _pre_jsq+1,R11
	sts _pre_jsq,R10
	.dbline 452
;    time0_chi=(unsigned char)(time0_jsq/256-1);    //计时量计算
	movw R24,R10
	mov R24,R25
	clr R25
	sbiw R24,1
	sts _time0_chi,R24
	.dbline 453
;    time0_yu=(unsigned char)(256-time0_jsq % 256);
	movw R24,R10
	andi R25,0
	ldi R30,256
	ldi R31,1
	sub R30,R24
	sbc R31,R25
	sts _time0_yu,R30
	.dbline 454
;    time0_fen=0;
	clr R2
	sts _time0_fen,R2
	.dbline 455
;    if (time0_yu>100)        //如果余数太小,则从次数中分出一次来,和余数加在一起分担剩余的时间
	ldi R24,100
	cp R24,R30
	brsh L249
	.dbline 456
;       {
	.dbline 457
; 	  time0_chi--;
	lds R24,_time0_chi
	subi R24,1
	sts _time0_chi,R24
	.dbline 458
; 	  time0_yu=156;
	ldi R24,156
	sts _time0_yu,R24
	.dbline 459
; 	  time0_fen=time0_yu-156;
	subi R24,156
	sts _time0_fen,R24
	.dbline 460
; 	  }
L249:
	.dbline 461
L226:
	.dbline -2
L225:
	xcall pop_gset4
	ld R2,y+
	out 0x3f,R2
	ld R31,y+
	ld R30,y+
	ld R27,y+
	ld R26,y+
	ld R25,y+
	ld R24,y+
	ld R19,y+
	ld R18,y+
	ld R17,y+
	ld R16,y+
	ld R9,y+
	ld R8,y+
	ld R5,y+
	ld R4,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbsym r tmp 12 c
	.dbsym r time0_jsq 10 i
	.dbend
	.area vector(rom, abs)
	.org 72
	jmp _int2_isr
	.area text(rom, con, rel)
	.dbfile D:\gmj_1\main.c
	.dbfunc e int2_isr _int2_isr fV
	.even
_int2_isr::
	st -y,R2
	st -y,R3
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 466
;    }
; }
; 
; #pragma interrupt_handler int2_isr:19
; void int2_isr(void)
; {
	.dbline 468
;  //external interupt on INT2
;  step_num=0;
	clr R2
	clr R3
	sts _step_num+1,R3
	sts _step_num,R2
	.dbline -2
L251:
	ld R2,y+
	out 0x3f,R2
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 473
; }
; 
; //call this routine to initialize all peripherals
; void init_devices(void)
; {
	.dbline 475
;  //stop errant interrupts until set up
;  CLI(); //disable all interrupts
	cli
	.dbline 476
;  port_init();
	xcall _port_init
	.dbline 477
;  timer0_init();
	xcall _timer0_init
	.dbline 478
;  timer1_init();
	xcall _timer1_init
	.dbline 479
;  timer2_init();
	xcall _timer2_init
	.dbline 480
;  twi_init();
	xcall _twi_init
	.dbline 481
;  adc_init();
	xcall _adc_init
	.dbline 483
; 
;  MCUCR = 0x0C;
	ldi R24,12
	out 0x35,R24
	.dbline 484
;  GICR  = 0xE0;
	ldi R24,224
	out 0x3b,R24
	.dbline 485
;  TIMSK = 0x45; //timer interrupt sources
	ldi R24,69
	out 0x39,R24
	.dbline 486
;  SEI(); //re-enable interrupts
	sei
	.dbline -2
L252:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e read_eeprom _read_eeprom fV
	.even
_read_eeprom::
	sbiw R28,2
	.dbline -1
	.dbline 491
;  //all peripherals are now initialized
; }
; 
; void read_eeprom(void)   //读取eeprom中的关键参数
; {
	.dbline 492
; EEPROM_READ(10,set_speed);
	ldi R24,4
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_set_speed
	ldi R19,>_set_speed
	ldi R16,10
	ldi R17,0
	xcall _EEPROMReadBytes
	.dbline 493
; EEPROM_READ(14,dw_speed);
	ldi R24,4
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_dw_speed
	ldi R19,>_dw_speed
	ldi R16,14
	ldi R17,0
	xcall _EEPROMReadBytes
	.dbline 494
; EEPROM_READ(18,juli_jcd);
	ldi R24,4
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_juli_jcd
	ldi R19,>_juli_jcd
	ldi R16,18
	ldi R17,0
	xcall _EEPROMReadBytes
	.dbline 495
; EEPROM_READ(22,longth_guamian);
	ldi R24,4
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_longth_guamian
	ldi R19,>_longth_guamian
	ldi R16,22
	ldi R17,0
	xcall _EEPROMReadBytes
	.dbline 496
; EEPROM_READ(26,ganju);
	ldi R24,4
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_ganju
	ldi R19,>_ganju
	ldi R16,26
	ldi R17,0
	xcall _EEPROMReadBytes
	.dbline 497
; EEPROM_READ(30,longth_zongmian);
	ldi R24,4
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_longth_zongmian
	ldi R19,>_longth_zongmian
	ldi R16,30
	ldi R17,0
	xcall _EEPROMReadBytes
	.dbline 498
; EEPROM_READ(34,caogan_speed);
	ldi R24,4
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_caogan_speed
	ldi R19,>_caogan_speed
	ldi R16,34
	ldi R17,0
	xcall _EEPROMReadBytes
	.dbline 499
; EEPROM_READ(38,max_ganshu);
	ldi R24,1
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_max_ganshu
	ldi R19,>_max_ganshu
	ldi R16,38
	ldi R17,0
	xcall _EEPROMReadBytes
	.dbline -2
L253:
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbend
	.area data(ram, con, rel)
	.dbfile D:\gmj_1\main.c
_check_gan::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\gmj_1\main.c
	.dbsym e check_gan _check_gan c
	.area text(rom, con, rel)
	.dbfile D:\gmj_1\main.c
	.dbfunc e main _main fV
;              n -> y+10
;           tttt -> y+8
;              i -> y+6
;              m -> R10,R11
	.even
_main::
	sbiw R28,14
	.dbline -1
	.dbline 505
; }
; 
; //
; unsigned char check_gan=0;
; void main(void)
; {
	.dbline 507
;  unsigned int i,m;
;  char *tttt="1231231";
	ldi R24,<L255
	ldi R25,>L255
	std y+9,R25
	std y+8,R24
	.dbline 509
;  unsigned int n;
;  init_devices();
	xcall _init_devices
	.dbline 513
; 
;  //insert your functional code here...
;  //开始全局变量的初始化
;  read_eeprom();
	xcall _read_eeprom
	.dbline 515
;   //结束全局变量的初始化
; M_state=8;
	ldi R24,8
	sts _M_state,R24
	.dbline 516
; PORTB &=0xef; //亮电源指示灯
	in R24,0x18
	andi R24,239
	out 0x18,R24
	.dbline 517
; for (i=0;i<10000;i++)
	clr R0
	clr R1
	std y+7,R1
	std y+6,R0
	xjmp L259
L256:
	.dbline 518
; {
	.dbline 519
	clr R10
	clr R11
	xjmp L263
L260:
	.dbline 519
L261:
	.dbline 519
	movw R24,R10
	adiw R24,1
	movw R10,R24
L263:
	.dbline 519
	movw R24,R10
	cpi R24,244
	ldi R30,1
	cpc R25,R30
	brlo L260
	.dbline 520
L257:
	.dbline 517
	ldd R24,y+6
	ldd R25,y+7
	adiw R24,1
	std y+7,R25
	std y+6,R24
L259:
	.dbline 517
	ldd R24,y+6
	ldd R25,y+7
	cpi R24,16
	ldi R30,39
	cpc R25,R30
	brlo L256
	.dbline 521
; for (m=0;m<500;m++);
; }
; disstring(tttt);
	ldd R16,y+8
	ldd R17,y+9
	xcall _disstring
	xjmp L265
L264:
	.dbline 523
; while (1)
; {
	.dbline 524
;  if (PORTD & 0b01000000)
	sbis 0x12,6
	rjmp L267
	.dbline 525
;     {
	.dbline 526
;      check_gan=1;
	ldi R24,1
	sts _check_gan,R24
	.dbline 527
;     } 
L267:
	.dbline 528
;  if ((check_gan==1) && ((PORTD & 0x01000000)==0))
	lds R24,_check_gan
	cpi R24,1
	brne L269
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,1
	in R2,0x12
	clr R3
	clr R4
	clr R5
	and R2,R20
	and R3,R21
	and R4,R22
	and R5,R23
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brne L269
	.dbline 529
;     {
	.dbline 530
; 	check_gan=0;
	clr R2
	sts _check_gan,R2
	.dbline 531
; 	jileigan++;
	lds R24,_jileigan
	subi R24,255    ; addi 1
	sts _jileigan,R24
	.dbline 532
; 	}
L269:
	.dbline 533
;  if ((jileigan>max_ganshu) & (caoshu==0))
	lds R2,_max_ganshu
	lds R3,_jileigan
	cp R2,R3
	brsh L273
	ldi R24,1
	ldi R25,0
	movw R14,R24
	xjmp L274
L273:
	clr R14
	clr R15
L274:
	lds R2,_caoshu
	tst R2
	brne L275
	ldi R24,1
	ldi R25,0
	movw R12,R24
	xjmp L276
L275:
	clr R12
	clr R13
L276:
	movw R2,R14
	and R2,R12
	and R3,R13
	tst R2
	brne X40
	tst R3
	breq L271
X40:
	.dbline 534
;     {
	.dbline 535
;     caoshu=1;
	ldi R24,1
	sts _caoshu,R24
	.dbline 536
;     current_speed=set_speed;
	lds R4,_set_speed+2
	lds R5,_set_speed+2+1
	lds R2,_set_speed
	lds R3,_set_speed+1
	sts _current_speed+1,R3
	sts _current_speed,R2
	sts _current_speed+2+1,R5
	sts _current_speed+2,R4
	.dbline 537
;     set_speed=caogan_speed;
	lds R4,_caogan_speed+2
	lds R5,_caogan_speed+2+1
	lds R2,_caogan_speed
	lds R3,_caogan_speed+1
	sts _set_speed+1,R3
	sts _set_speed,R2
	sts _set_speed+2+1,R5
	sts _set_speed+2,R4
	.dbline 539
; //亮超速指示灯
;     PORTB &=0xbf;
	in R24,0x18
	andi R24,191
	out 0x18,R24
	.dbline 540
;     }
L271:
	.dbline 541
;     if ((jileigan<=3) & (caoshu==1))
	ldi R24,3
	lds R2,_jileigan
	cp R24,R2
	brlo L279
	ldi R24,1
	ldi R25,0
	movw R14,R24
	xjmp L280
L279:
	clr R14
	clr R15
L280:
	lds R24,_caoshu
	cpi R24,1
	brne L281
	ldi R24,1
	ldi R25,0
	movw R12,R24
	xjmp L282
L281:
	clr R12
	clr R13
L282:
	movw R2,R14
	and R2,R12
	and R3,R13
	tst R2
	brne X41
	tst R3
	breq L277
X41:
	.dbline 542
;     {
	.dbline 543
;     caoshu=0;
	clr R2
	sts _caoshu,R2
	.dbline 544
;     set_speed=current_speed; 
	lds R4,_current_speed+2
	lds R5,_current_speed+2+1
	lds R2,_current_speed
	lds R3,_current_speed+1
	sts _set_speed+1,R3
	sts _set_speed,R2
	sts _set_speed+2+1,R5
	sts _set_speed+2,R4
	.dbline 546
; //关超速指示灯
;     PORTB |=0x40;
	sbi 0x18,6
	.dbline 547
;     }
L277:
	.dbline 548
; if (on_key==1)
	lds R24,_on_key
	cpi R24,1
	breq X46
	xjmp L283
X46:
	.dbline 549
;    {
	.dbline 550
;    on_key=0;
	clr R2
	sts _on_key,R2
	.dbline 551
;    key=ZLG7290_GetKey();
	xcall _ZLG7290_GetKey
	sts _key,R16
	.dbline 552
;    if (key>0)
	clr R2
	mov R3,R16
	cp R2,R16
	brlo X47
	xjmp L285
X47:
	.dbline 553
;       {
	.dbline 554
; 	  if (menu_jb==0)
	lds R2,_menu_jb
	tst R2
	breq X48
	xjmp L287
X48:
	.dbline 555
; 	     switch (key)
	mov R10,R3
	clr R11
	movw R24,R10
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	brne X49
	xjmp L293
X49:
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	brne X50
	xjmp L298
X50:
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	brne X51
	xjmp L302
X51:
	cpi R24,5
	ldi R30,0
	cpc R25,R30
	brne X52
	xjmp L303
X52:
	cpi R24,6
	ldi R30,0
	cpc R25,R30
	brne X53
	xjmp L304
X53:
	cpi R24,8
	ldi R30,0
	cpc R25,R30
	breq L292
	cpi R24,10
	ldi R30,0
	cpc R25,R30
	brne X54
	xjmp L305
X54:
	cpi R24,11
	ldi R30,0
	cpc R25,R30
	brne X55
	xjmp L306
X55:
	cpi R24,12
	ldi R30,0
	cpc R25,R30
	brne X56
	xjmp L307
X56:
	xjmp L289
X42:
	.dbline 556
;       {
L292:
	.dbline 558
;       case START : 
;          {
	.dbline 559
;          pidai_yunxing=1;
	ldi R24,1
	sts _pidai_yunxing,R24
	.dbline 560
;          guogan=1; 
	sts _guogan,R24
	.dbline 562
;          //亮运行指示灯
;          disstring(string1);
	lds R16,_string1
	lds R17,_string1+1
	xcall _disstring
	.dbline 563
;          } break;
	.dbline 563
	xjmp L290
L293:
	.dbline 565
;       case INC_SPEED : 
;          {
	.dbline 566
;          set_speed=set_speed+50;
	lds R4,_set_speed+2
	lds R5,_set_speed+2+1
	lds R2,_set_speed
	lds R3,_set_speed+1
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	ldi R16,<L294
	ldi R17,>L294
	xcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	xcall add32f
	sts _set_speed+1,R17
	sts _set_speed,R16
	sts _set_speed+2+1,R19
	sts _set_speed+2,R18
	.dbline 567
;          if (set_speed>5

⌨️ 快捷键说明

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