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

📄 hd_support.s

📁 一个直流电机的闭环控制源代码程序
💻 S
📖 第 1 页 / 共 2 页
字号:
; *   输出:    无                                           *
; *   调用函数:无                                           *
; ***********************************************************/
; static void Port_INIT(void)
; {
	.dbline 160
;     //LED
;     DDR_PC0 = PDIR_OUT;_PC0 = LOW;
	in R24,0x14
	ori R24,1
	out 0x14,R24
	.dbline 160
	in R24,0x15
	andi R24,254
	out 0x15,R24
	.dbline 163
;     
;     //SP027
;     DDR_PC5 = PDIR_OUT;_PC5 = HIGH;
	in R24,0x14
	ori R24,32
	out 0x14,R24
	.dbline 163
	in R24,0x15
	ori R24,32
	out 0x15,R24
	.dbline 164
;     DDR_PC4 = PDIR_OUT;_PC4 = HIGH;
	in R24,0x14
	ori R24,16
	out 0x14,R24
	.dbline 164
	in R24,0x15
	ori R24,16
	out 0x15,R24
	.dbline 167
;     
;     //外中断
;     DDR_PD2 = PDIR_IN; _PD2 = HIGH;
	in R24,0x11
	andi R24,251
	out 0x11,R24
	.dbline 167
	in R24,0x12
	ori R24,4
	out 0x12,R24
	.dbline 168
;     DDR_PD3 = PDIR_IN; _PD3 = HIGH;
	in R24,0x11
	andi R24,247
	out 0x11,R24
	.dbline 168
	in R24,0x12
	ori R24,8
	out 0x12,R24
	.dbline 171
;     
;     //SPI
;     DDR_PB2 = PDIR_IN; _PB2 = LOW;
	in R24,0x17
	andi R24,251
	out 0x17,R24
	.dbline 171
	in R24,0x18
	andi R24,251
	out 0x18,R24
	.dbline 172
;     DDR_PB3 = PDIR_IN; _PB3 = LOW;
	in R24,0x17
	andi R24,247
	out 0x17,R24
	.dbline 172
	in R24,0x18
	andi R24,247
	out 0x18,R24
	.dbline 173
;     DDR_PB4 = PDIR_IN; _PB4 = LOW;
	in R24,0x17
	andi R24,239
	out 0x17,R24
	.dbline 173
	in R24,0x18
	andi R24,239
	out 0x18,R24
	.dbline 174
;     DDR_PB5 = PDIR_IN; _PB5 = LOW;
	in R24,0x17
	andi R24,223
	out 0x17,R24
	.dbline 174
	in R24,0x18
	andi R24,223
	out 0x18,R24
	.dbline 177
;     
;     //串口
;     DDR_PD0 = PDIR_IN; _PD0 = HIGH;
	in R24,0x11
	andi R24,254
	out 0x11,R24
	.dbline 177
	in R24,0x12
	ori R24,1
	out 0x12,R24
	.dbline 180
;     
;     //PWM输出
;     DDR_PB1 = PDIR_OUT;
	in R24,0x17
	ori R24,2
	out 0x17,R24
	.dbline 182
;     //电机控制
;     DDR_PD6 = PDIR_OUT; _PD6 = HIGH;
	in R24,0x11
	ori R24,64
	out 0x11,R24
	.dbline 182
	in R24,0x12
	ori R24,64
	out 0x12,R24
	.dbline 183
;     DDR_PD7 = PDIR_OUT; _PD7 = HIGH;
	in R24,0x11
	ori R24,128
	out 0x11,R24
	.dbline 183
	in R24,0x12
	ori R24,128
	out 0x12,R24
	.dbline 186
;     
;     //读写控制
;     DDR_PD4 = PDIR_IN;  _PD4 = HIGH;
	in R24,0x11
	andi R24,239
	out 0x11,R24
	.dbline 186
	in R24,0x12
	ori R24,16
	out 0x12,R24
	.dbline -2
L13:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc s Timer1_INIT _Timer1_INIT fV
	.even
_Timer1_INIT:
	.dbline -1
	.dbline 196
; }
; 
; /***********************************************************
; *   函数声明:定时器1初始化函数                            *
; *   输入:    无                                           *
; *   输出:    无                                           *
; *   调用函数:无                                           *
; ***********************************************************/
; static void Timer1_INIT(void)
; {
	.dbline 197
;     TCCR1B = 0x00; 
	clr R2
	out 0x2e,R2
	.dbline 198
;     ICR1  = 0x0320;
	ldi R24,800
	ldi R25,3
	out 0x27,R25
	out 0x26,R24
	.dbline 199
;     TCCR1A = 0x80;
	ldi R24,128
	out 0x2f,R24
	.dbline 200
;     TCCR1B = 0x11; //start Timer
	ldi R24,17
	out 0x2e,R24
	.dbline -2
L14:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc s Timer0_INIT _Timer0_INIT fV
	.even
_Timer0_INIT:
	.dbline -1
	.dbline 210
; }
; 
; /***********************************************************
; *   函数声明:定时器0初始化函数                            *
; *   输入:    无                                           *
; *   输出:    无                                           *
; *   调用函数:无                                           *
; ***********************************************************/
; static void Timer0_INIT(void)
; {
	.dbline 211
;     TCCR0 = 0x00; 
	clr R2
	out 0x33,R2
	.dbline 212
;     TCNT0 = 0x06; 
	ldi R24,6
	out 0x32,R24
	.dbline 213
;     TCCR0 = 0x03; 
	ldi R24,3
	out 0x33,R24
	.dbline -2
L15:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Timer0_OVF_ISR _Timer0_OVF_ISR fV
	.even
_Timer0_OVF_ISR::
	st -y,R0
	st -y,R1
	st -y,R2
	st -y,R3
	st -y,R4
	st -y,R5
	st -y,R6
	st -y,R7
	st -y,R8
	st -y,R9
	st -y,R16
	st -y,R17
	st -y,R18
	st -y,R19
	st -y,R24
	st -y,R25
	st -y,R26
	st -y,R27
	st -y,R30
	st -y,R31
	in R0,0x3f
	st -y,R0
	.dbline -1
	.dbline 223
; }
; 
; /***********************************************************
; *   函数声明:定时器0溢出中断处理程序                      *
; *   输入:    无                                           *
; *   输出:    无                                           *
; *   调用函数:INSERT_TIMER0_OVF_ISR_CODE                   *
; ***********************************************************/
; void Timer0_OVF_ISR(void)
; {
	.dbline 224
;     TCNT0 = 0x06; 
	ldi R24,6
	out 0x32,R24
	.dbline 226
;     
;     INSERT_TIMER0_OVF_ISR_CODE
	sei
	.dbline 226
	rcall _Insert_Timer0_OVF_ISR_Code
	.dbline -2
L16:
	.dbline 0 ; func end
	ld R0,y+
	out 0x3f,R0
	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 R7,y+
	ld R6,y+
	ld R5,y+
	ld R4,y+
	ld R3,y+
	ld R2,y+
	ld R1,y+
	ld R0,y+
	reti
	.dbend
	.dbfunc s USART0_INIT _USART0_INIT fV
	.even
_USART0_INIT:
	.dbline -1
	.dbline 239
; }
; 
; /***********************************************************
; *   函数说明:USART0初始化函数                             *
; *   输入:    无                                           *
; *   输出:    无                                           *
; *   调用函数:无                                           *
; * -------------------------------------------------------- *
; *   [说明]                                                 *
; *   波特率:  38400,n,8,1                                  *
; ***********************************************************/
; static void USART0_INIT(void)
; {
	.dbline 248
; #ifdef LEFT_MOTOR
;     UCSRB = 0x00; //disable while setting baud rate
;     UCSRA = 0x01;
;     UCSRC = BIT(URSEL) | 0x06;
;     UBRRL = 0x19; //set baud rate lo
;     UBRRH = 0x00; //set baud rate hi
;     UCSRB = 0xDC;
; #else
;     UCSRB = 0x00; //disable while setting baud rate
	clr R2
	out 0xa,R2
	.dbline 249
;     UCSRA = 0x00;
	out 0xb,R2
	.dbline 250
;     UCSRC = BIT(URSEL) | 0x06;
	ldi R24,134
	out 0x20,R24
	.dbline 251
;     UBRRL = 0x19; //set baud rate lo
	ldi R24,25
	out 0x9,R24
	.dbline 252
;     UBRRH = 0x00; //set baud rate hi
	out 0x20,R2
	.dbline 253
;     UCSRB = 0xDC;
	ldi R24,220
	out 0xa,R24
	.dbline -2
L17:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e USART0_RX_ISR _USART0_RX_ISR fV
;      cTempUDR0 -> R10
;       b9thBit0 -> R20
	.even
_USART0_RX_ISR::
	st -y,R0
	st -y,R1
	st -y,R2
	st -y,R3
	st -y,R4
	st -y,R5
	st -y,R6
	st -y,R7
	st -y,R8
	st -y,R9
	st -y,R10
	st -y,R16
	st -y,R17
	st -y,R18
	st -y,R19
	st -y,R20
	st -y,R24
	st -y,R25
	st -y,R26
	st -y,R27
	st -y,R30
	st -y,R31
	in R0,0x3f
	st -y,R0
	st -y,R10
	st -y,R20
	.dbline -1
	.dbline 264
; #endif
; }
; 
; /***********************************************************
; *   函数说明:串口接收完成中断处理函数                     *
; *   输入:    无                                           *
; *   输出:    无                                           *
; *   调用函数:INSERT_USART0_RX_ISR_CODE                    *
; ***********************************************************/
; void USART0_RX_ISR(void)
; {
	.dbline 269
; #ifndef _USE_9BIT_MODEL
;     uint8 cTempUDR = UDR;    
; #endif
; 
;     INSERT_USART0_RX_ISR_CODE
	.dbline 269
	in R20,0xa
	andi R20,2
	.dbline 269
	in R10,0xc
	.dbline 269
	sei
	.dbline 269
	tst R20
	brne L19
X4:
	.dbline 269
	.dbline 269
	mov R16,R10
	rcall _UARTaddDataToRxBuff
	.dbline 269
	.dbline 269
L19:
	.dbline 269
	.dbline -2
L18:
	.dbline 0 ; func end
	ld R20,y+
	ld R10,y+
	ld R0,y+
	out 0x3f,R0
	ld R31,y+
	ld R30,y+
	ld R27,y+
	ld R26,y+
	ld R25,y+
	ld R24,y+
	ld R20,y+
	ld R19,y+
	ld R18,y+
	ld R17,y+
	ld R16,y+
	ld R10,y+
	ld R9,y+
	ld R8,y+
	ld R7,y+
	ld R6,y+
	ld R5,y+
	ld R4,y+
	ld R3,y+
	ld R2,y+
	ld R1,y+
	ld R0,y+
	reti
	.dbsym r cTempUDR0 10 c
	.dbsym r b9thBit0 20 c
	.dbend
	.dbfunc e USART0_TX_ISR _USART0_TX_ISR fV
	.even
_USART0_TX_ISR::
	st -y,R24
	in R24,0x3f
	st -y,R24
	.dbline -1
	.dbline 279
; }
; 
; /***********************************************************
; *   函数说明:串口发送完成中断处理函数                     *
; *   输入:    无                                           *
; *   输出:    无                                           *
; *   调用函数:INSERT_USART0_TX_ISR_CODE                    *
; ***********************************************************/
; void USART0_TX_ISR(void)
; {
	.dbline 280
;     INSERT_USART0_TX_ISR_CODE
	sei
	.dbline 280
	ldi R24,1
	sts _g_bIfSerialTransmitCompleted,R24
	.dbline 280
	.dbline -2
L21:
	.dbline 0 ; func end
	ld R24,y+
	out 0x3f,R24
	ld R24,y+
	reti
	.dbend
; }

⌨️ 快捷键说明

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