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

📄 bjdj_4.lst

📁 利用mega128控制由L298和L297构成的驱动板
💻 LST
📖 第 1 页 / 共 4 页
字号:
  KeyValue             --> Y+2
  FnKeyValue           --> Y+1
  RepeatCnt            --> Y+0
    0306 9723      SBIW	R28,3
(0246) 
(0247) /*
(0248) 函数:Test_Key()
(0249) 功能:测试按键功能
(0250) */
(0251) void Test_Key()
(0252) {
(0253) 	uchar KeyValue;
(0254) 	uchar RepeatCnt;
(0255) 	uchar FnKeyValue;
(0256) 	ClearAll();
    0307 DECA      RCALL	_ClearAll
(0257) 	for (;;)
(0258) 	{
(0259) 		if ( FlagINT )		//如果有键按下
    0308 90200110  LDS	R2,0x110
    030A 90300111  LDS	R3,0x111
    030C 2022      TST	R2
    030D F411      BNE	0x0310
    030E 2033      TST	R3
    030F F3C1      BEQ	0x0308
(0260) 		{
(0261) 		//清除中断标志
(0262) 			FlagINT = 0;
    0310 2422      CLR	R2
    0311 2433      CLR	R3
    0312 92300111  STS	R3,0x111
    0314 92200110  STS	R2,0x110
(0263) 		//读取键值、连击计数器值、功能键值
(0264) 			ZLG7290_ReadReg(ZLG7290_Key,&KeyValue);
    0316 019E      MOVW	R18,R28
    0317 5F2E      SUBI	R18,0xFE
    0318 4F3F      SBCI	R19,0xFF
    0319 E001      LDI	R16,1
    031A DE40      RCALL	_ZLG7290_ReadReg
(0265) 			ZLG7290_ReadReg(ZLG7290_RepeatCnt,&RepeatCnt);
    031B 019E      MOVW	R18,R28
    031C E002      LDI	R16,2
    031D DE3D      RCALL	_ZLG7290_ReadReg
(0266) 			ZLG7290_ReadReg(ZLG7290_FunctionKey,&FnKeyValue);
    031E 019E      MOVW	R18,R28
    031F 5F2F      SUBI	R18,0xFF
    0320 4F3F      SBCI	R19,0xFF
    0321 E003      LDI	R16,3
    0322 DE38      RCALL	_ZLG7290_ReadReg
(0267) 		//显示键值、连击计数器值、功能键值
(0268) 			//DispValue(0,KeyValue);
(0269) 			DispHexValue(3,RepeatCnt);
    0323 8128      LDD	R18,0+Y
    0324 E003      LDI	R16,3
    0325 DFC1      RCALL	_DispHexValue
(0270) 			DispHexValue(6,FnKeyValue);
    0326 8129      LDD	R18,1+Y
    0327 E006      LDI	R16,6
    0328 DFBE      RCALL	_DispHexValue
    0329 CFDE      RJMP	0x0308
    032A 9623      ADIW	R28,3
    032B 9508      RET
_delayus:
  i                    --> R20
  us                   --> R22
    032C 940E03F6  CALL	push_gset2
    032E 01B8      MOVW	R22,R16
FILE: E:\重新整理的文件\控制类\步进电机\程序\avr\bjdj_4.c
(0001) //电机转一圈走27MM
(0002) #include <iom128v.h>
(0003) #include <iom128.h>
(0004) #include <macros.h>
(0005) #include "BIT.h"
(0006) #include "zlg7290_avr.c"
(0007) 
(0008) #define uint unsigned int
(0009) #define uchar unsigned char
(0010) /*********电机1控制端口************/
(0011) #define  cw1  _PA1
(0012) #define  hf1  _PA3
(0013) #define  en1  _PA5
(0014) #define  rst1  _PA7
(0015) #define  clk1  _PC6
(0016) 
(0017) /*********电机2控制端口************/
(0018) #define  cw2  _PA0
(0019) #define  hf2  _PA2
(0020) #define  en2  _PA4
(0021) #define  rst2  _PA6
(0022) #define  clk2  _PG2
(0023) 
(0024) //uint bjl,rev,key,set=0;
(0025) /*******************************************
(0026) 函数名称: delayus
(0027) 功    能: 延时指定微秒(16M晶振)
(0028) 参    数: us--延时的微秒数(大约,不是很精确,MS越大越准确)
(0029) 返回值  : 无
(0030) /********************************************/
(0031) void delayus(uint us)		  
(0032) {
(0033)  uint i;
(0034)  us=us*5/2;		  	 //9/8是在16MHz晶振下,通过反复实验得到的数值
    032F E005      LDI	R16,5
    0330 E010      LDI	R17,0
    0331 019B      MOVW	R18,R22
    0332 940E03CF  CALL	empy16s
    0334 01B8      MOVW	R22,R16
    0335 9576      LSR	R23
    0336 9567      ROR	R22
(0035)  for( i=0;i<us;i++); 
    0337 2744      CLR	R20
    0338 2755      CLR	R21
    0339 C002      RJMP	0x033C
    033A 5F4F      SUBI	R20,0xFF
    033B 4F5F      SBCI	R21,0xFF
    033C 1746      CP	R20,R22
    033D 0757      CPC	R21,R23
    033E F3D8      BCS	0x033A
(0036) }
    033F 940E0406  CALL	pop_gset2
    0341 9508      RET
_delayms:
  x                    --> R20
  y                    --> R22
  z                    --> R16
    0342 940E03F6  CALL	push_gset2
(0037) 
(0038) /*******************************************
(0039) 函数名称: delayms()
(0040) 功    能: 16MHz晶振下延时 z ms 
(0041) 参    数: z
(0042) 返回值  : 无
(0043) /********************************************/
(0044) void delayms(uint z)
(0045) {
(0046)    uint x,y;
(0047)    for(x=z;x>0;x--)
    0344 01A8      MOVW	R20,R16
    0345 C00A      RJMP	0x0350
(0048)     for(y=2660;y>0;y--);
    0346 E664      LDI	R22,0x64
    0347 E07A      LDI	R23,0xA
    0348 C002      RJMP	0x034B
    0349 5061      SUBI	R22,1
    034A 4070      SBCI	R23,0
    034B 3060      CPI	R22,0
    034C 0767      CPC	R22,R23
    034D F7D9      BNE	0x0349
    034E 5041      SUBI	R20,1
    034F 4050      SBCI	R21,0
    0350 3040      CPI	R20,0
    0351 0745      CPC	R20,R21
    0352 F799      BNE	0x0346
(0049) }
    0353 940E0406  CALL	pop_gset2
    0355 9508      RET
(0050) 
(0051) void bjdj_init1()
(0052) {
(0053)    DDRA|=BIT(1)|BIT(3)|BIT(5)|BIT(7);
_bjdj_init1:
    0356 B38A      IN	R24,P1A
    0357 6A8A      ORI	R24,0xAA
    0358 BB8A      OUT	P1A,R24
(0054)    DDRC|=BIT(6);
    0359 9AA6      SBI	P14,6
(0055)    cw1=1;  //  0:正传  1:反转
    035A B38B      IN	R24,P1B
    035B 6082      ORI	R24,2
    035C BB8B      OUT	P1B,R24
(0056)    en1=0;  //
    035D B38B      IN	R24,P1B
    035E 7D8F      ANDI	R24,0xDF
    035F BB8B      OUT	P1B,R24
(0057)    rst1=0;//
    0360 B38B      IN	R24,P1B
    0361 778F      ANDI	R24,0x7F
    0362 BB8B      OUT	P1B,R24
(0058)    hf1=0;//  0:半步  1:整步
    0363 B38B      IN	R24,P1B
    0364 7F87      ANDI	R24,0xF7
    0365 BB8B      OUT	P1B,R24
(0059) }
    0366 9508      RET
(0060) 
(0061) void bjdj_init2()
(0062) {
(0063)    DDRA|=BIT(0)|BIT(2)|BIT(4)|BIT(6);
_bjdj_init2:
    0367 B38A      IN	R24,P1A
    0368 6585      ORI	R24,0x55
    0369 BB8A      OUT	P1A,R24
(0064)    DDRG|=BIT(2);
    036A 91800064  LDS	R24,0x64
    036C 6084      ORI	R24,4
    036D 93800064  STS	R24,0x64
(0065)    cw2=1;//0:正传  1:反转
    036F B38B      IN	R24,P1B
    0370 6081      ORI	R24,1
    0371 BB8B      OUT	P1B,R24
(0066)    en2=0;//
    0372 B38B      IN	R24,P1B
    0373 7E8F      ANDI	R24,0xEF
    0374 BB8B      OUT	P1B,R24
(0067)    rst2=0;//
    0375 B38B      IN	R24,P1B
    0376 7B8F      ANDI	R24,0xBF
    0377 BB8B      OUT	P1B,R24
(0068)    hf2=0;//0:半步  1:整步
    0378 B38B      IN	R24,P1B
    0379 7F8B      ANDI	R24,0xFB
    037A BB8B      OUT	P1B,R24
(0069) }
    037B 9508      RET
(0070) 
(0071) 
(0072) void main()
(0073) {
(0074)    uint i,dat;
(0075)    bjdj_init1();
_main:
  dat                  --> Y+1
  i                    --> Y+1
    037C DFD9      RCALL	_bjdj_init1
(0076)    bjdj_init2();
    037D DFE9      RCALL	_bjdj_init2
(0077)    clk1=1;
    037E B385      IN	R24,P15
    037F 6480      ORI	R24,0x40
    0380 BB85      OUT	P15,R24
(0078)    clk2=1;
    0381 91800065  LDS	R24,0x65
    0383 6084      ORI	R24,4
    0384 93800065  STS	R24,0x65
    0386 C016      RJMP	0x039D
(0079)    while(1)
(0080)    {
(0081)      
(0082)       clk1=1;
    0387 B385      IN	R24,P15
    0388 6480      ORI	R24,0x40
    0389 BB85      OUT	P15,R24
(0083) 	  clk2=1;
    038A 91800065  LDS	R24,0x65
    038C 6084      ORI	R24,4
    038D 93800065  STS	R24,0x65
(0084) 	  delayms(2);
    038F E002      LDI	R16,2
    0390 E010      LDI	R17,0
    0391 DFB0      RCALL	_delayms
(0085) 	  clk1=0;
    0392 B385      IN	R24,P15
    0393 7B8F      ANDI	R24,0xBF
    0394 BB85      OUT	P15,R24
(0086) 	  clk2=0;
    0395 91800065  LDS	R24,0x65
    0397 7F8B      ANDI	R24,0xFB
    0398 93800065  STS	R24,0x65
(0087) 	  delayms(2);
    039A E002      LDI	R16,2
    039B E010      LDI	R17,0
    039C DFA5      RCALL	_delayms
    039D CFE9      RJMP	0x0387
(0088)    }
(0089) }FILE: <library>
    039E 9508      RET
mod8u:
    039F 9468      BSET	6
    03A0 C001      RJMP	xdiv8u
div8u:
    03A1 94E8      BCLR	6
xdiv8u:
    03A2 932A      ST	R18,-Y
    03A3 92FA      ST	R15,-Y
    03A4 24FF      CLR	R15
    03A5 E028      LDI	R18,0x8
    03A6 0F00      LSL	R16
    03A7 1CFF      ROL	R15
    03A8 16F1      CP	R15,R17
    03A9 F010      BCS	0x03AC
    03AA 1AF1      SUB	R15,R17
    03AB 9503      INC	R16
    03AC 952A      DEC	R18
    03AD F7C1      BNE	0x03A6
    03AE F40E      BRTC	0x03B0
    03AF 2D0F      MOV	R16,R15
    03B0 90F9      LD	R15,Y+
    03B1 9129      LD	R18,Y+
    03B2 9508      RET
mod16u:
    03B3 9468      BSET	6
    03B4 C001      RJMP	xdiv16u
div16u:
    03B5 94E8      BCLR	6
xdiv16u:
    03B6 92EA      ST	R14,-Y
    03B7 92FA      ST	R15,-Y
    03B8 938A      ST	R24,-Y
    03B9 24EE      CLR	R14
    03BA 24FF      CLR	R15
    03BB E180      LDI	R24,0x10
    03BC 0F00      LSL	R16
    03BD 1F11      ROL	R17
    03BE 1CEE      ROL	R14
    03BF 1CFF      ROL	R15
    03C0 16E2      CP	R14,R18
    03C1 06F3      CPC	R15,R19
    03C2 F018      BCS	0x03C6
    03C3 1AE2      SUB	R14,R18
    03C4 0AF3      SBC	R15,R19
    03C5 9503      INC	R16
    03C6 958A      DEC	R24
    03C7 F7A1      BNE	0x03BC
    03C8 F416      BRTC	0x03CB
    03C9 2D0E      MOV	R16,R14
    03CA 2D1F      MOV	R17,R15
    03CB 9189      LD	R24,Y+
    03CC 90F9      LD	R15,Y+
    03CD 90E9      LD	R14,Y+
    03CE 9508      RET
empy16s:
    03CF 920A      ST	R0,-Y
    03D0 921A      ST	R1,-Y
    03D1 938A      ST	R24,-Y
    03D2 939A      ST	R25,-Y
    03D3 9F02      MUL	R16,R18
    03D4 01C0      MOVW	R24,R0
    03D5 9F12      MUL	R17,R18
    03D6 0D90      ADD	R25,R0
    03D7 9F03      MUL	R16,R19
    03D8 0D90      ADD	R25,R0
    03D9 018C      MOVW	R16,R24
    03DA 9199      LD	R25,Y+
    03DB 9189      LD	R24,Y+
    03DC 9019      LD	R1,Y+
    03DD 9009      LD	R0,Y+
    03DE 9508      RET
push_gset1:
    03DF 935A      ST	R21,-Y
    03E0 934A      ST	R20,-Y
    03E1 9508      RET
pop_gset1:
    03E2 E0E1      LDI	R30,1
pop:
    03E3 9149      LD	R20,Y+
    03E4 9159      LD	R21,Y+
    03E5 FDE0      SBRC	R30,0
    03E6 9508      RET
    03E7 9169      LD	R22,Y+
    03E8 9179      LD	R23,Y+
    03E9 FDE1      SBRC	R30,1
    03EA 9508      RET
    03EB 90A9      LD	R10,Y+
    03EC 90B9      LD	R11,Y+
    03ED FDE2      SBRC	R30,2
    03EE 9508      RET
    03EF 90C9      LD	R12,Y+
    03F0 90D9      LD	R13,Y+
    03F1 FDE3      SBRC	R30,3
    03F2 9508      RET
    03F3 90E9      LD	R14,Y+
    03F4 90F9      LD	R15,Y+
    03F5 9508      RET
push_gset2:
    03F6 937A      ST	R23,-Y
    03F7 936A      ST	R22,-Y
    03F8 940C03DF  JMP	push_gset1
push_gset3:
    03FA 92BA      ST	R11,-Y
    03FB 92AA      ST	R10,-Y
    03FC 940C03F6  JMP	push_gset2
push_gset4:
    03FE 92DA      ST	R13,-Y
    03FF 92CA      ST	R12,-Y
    0400 940C03FA  JMP	push_gset3
push_gset5:
    0402 92FA      ST	R15,-Y
    0403 92EA      ST	R14,-Y
    0404 940C03FE  JMP	push_gset4
pop_gset2:
    0406 E0E2      LDI	R30,2
    0407 940C03E3  JMP	pop
pop_gset3:
    0409 E0E4      LDI	R30,4
    040A 940C03E3  JMP	pop
pop_gset4:
    040C E0E8      LDI	R30,0x8
    040D 940C03E3  JMP	pop
pop_gset5:
    040F 27EE      CLR	R30
    0410 940C03E3  JMP	pop
asgncblk:
    0412 93AA      ST	R26,-Y
    0413 93BA      ST	R27,-Y
    0414 93EA      ST	R30,-Y
    0415 93FA      ST	R31,-Y
    0416 920A      ST	R0,-Y
    0417 81AF      LDD	R26,7+Y
    0418 85B8      LDD	R27,8+Y
    0419 81ED      LDD	R30,5+Y
    041A 81FE      LDD	R31,6+Y
    041B 3000      CPI	R16,0
    041C 0701      CPC	R16,R17
    041D F031      BEQ	0x0424
    041E 95C8      LPM
    041F 920D      ST	R0,X+
    0420 9631      ADIW	R30,1
    0421 5001      SUBI	R16,1
    0422 4010      SBCI	R17,0
    0423 CFF7      RJMP	0x041B
    0424 9009      LD	R0,Y+
    0425 91F9      LD	R31,Y+
    0426 91E9      LD	R30,Y+
    0427 91B9      LD	R27,Y+
    0428 91A9      LD	R26,Y+
    0429 9624      ADIW	R28,4
    042A 9508      RET

⌨️ 快捷键说明

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