📄 control1.asm
字号:
lacl option
sub #46h
bcnd kqi_rx,eq ;q轴积分系数接收
lacl option
sub #47h
bcnd kqd_rx,eq ;q轴微分系数接收
**********************************************
lacl option
sub #48h
bcnd kdp_rx,eq ;d轴比例系数接收
lacl option
sub #49h
bcnd kdi_rx,eq ;d轴积分系数接收
lacl option
sub #4ah
bcnd kdd_rx,eq ;d轴微分系数接收
b sci_return
**************************************************
**************************************************
**********转速接收********************************
speed_rx:
lacl option
sub #41h
bcnd speed_knp,neq
ldp #DP_PF1 ;sleep位清0,返回,准备接收数据
splk #0023h,SCICTL1
b sci_return
****************************************************
ng_rx:
ldp #DP_PF1
lacl SCIRXBUF ;读取接收的数据
and #00ffh
ldp #6
bit rx_bit_flag,BIT0 ;判断是高8位还是低8位
bcnd ng_high8_rx,ntc
b ng_low8_rx
ng_high8_rx: ;高8位数据接收
sacl ref_rx_h
b ng_rx_return2
ng_low8_rx:
sacl ref_rx_l ;低8位数据接收
lacc ref_rx_h,8
add ref_rx_l
*****************************************
bit option_flag,BIT0 ;0000 0000,bit0=1:第1次接收
bcnd ng_rx1,tc ;0001 0000;bit4=0:第2次接收
b ng_rx2
ng_rx1:
ldp #6
sacl f_ref_rx1 ;获取转速给定值
ldp #DP_PF1
splk #0027h,SCICTL1 ;第1次数据接收完毕,sleep置1,准备接收地址
b ng_rx_return2
ng_rx2:
sub f_ref_rx1 ;第2次接收数据与第1次接收数据比较
bcnd ng_rx_end,eq ;相等,则赋给f_ref_rx,参与运算。
b ng_rx_return1 ;不相等,则f_ref_rx数值不变,并返回等待新数据输入。
ng_rx_end:
lacl f_ref_rx1
sacl f_ref_rx
lar ar1,#UF_E ;每次接受完新数据,ar1重新指向首地址
lar ar0,#UF_E+2048
lacl #01h
sacl sta_save_flag ;开始存储数据标志位
****************************************
ng_rx_return1:
ldp #DP_PF1
splk #0027h,SCICTL1 ;数据接收完毕,sleep置1,准备接收地址
;b sci_return ;此前没有改变rx_bit_flag的值就返回SCI中断,导致第2次数据接收不正确。
ng_rx_return2:
ldp #6
lacl rx_bit_flag ;接收高、低8位数据的标志位
xor #01h
sacl rx_bit_flag
b sci_return
*******************************************************
*******************************************************
***********转速环比例系数接收**************************
speed_knp:
;lacl option_flag ;第1次接收到地址标识符后,option_flag置1
;xor #01h ;为第2次接收地址字符做准备
;sacl option_flag ;注意:option_flag标志位在speed_rx中已经修改,此处略去
lacl option ;检测地址字符是否是42h
sub #42h
bcnd speed_kni,neq ;不相等,则检测下一个
ldp #DP_PF1
splk #0023h,SCICTL1 ;相等,则sleep位清0,准备接收数据
b sci_return ;返回
********************************************************
knp_rx: ;地址字节相符后,knp_rx作为数据接收标识
ldp #DP_PF1
lacl SCIRXBUF ;读取数据字节
and #00ffh
ldp #6
bit rx_bit_flag,BIT0 ;读取高8位字节
bcnd knp_high8_rx,ntc
b knp_low8_rx ;读取低8位字节
knp_high8_rx:
sacl ref_rx_h ;存储高8位后,修改rx_bit_flag标志,并返回。
b knp_rx_return2
knp_low8_rx:
sacl ref_rx_l ;存储低8位
lacc ref_rx_h,8
add ref_rx_l ;读取完整字符
bit option_flag,BIT0 ;option_flag的bit0=1,表示第1次接收的数据
bcnd knp_rx1,tc ;bit0=0,表示第2次接收的数据
b knp_rx2
knp_rx1:
ldp #6
sacl f_ref_rx1 ;获取第1次比例系数
ldp #DP_PF1
splk #0027h,SCICTL1 ;第1次数据接收完毕,sleep置1,准备接收地址
b knp_rx_return2 ;修改rx_bit_flag标志,并返回。
knp_rx2:
sub f_ref_rx1 ;第2次接收数据与第1次接收数据比较
bcnd knp_rx_end,eq
b knp_rx_return1
knp_rx_end: ;相等,则赋给kn_p,参与运算。
lacl f_ref_rx1
sacl Kn_p
knp_rx_return1: ;不相等,则f_ref_rx数值不变,并返回等待新数据输入。
ldp #DP_PF1
splk #0027h,SCICTL1 ;数据接收完毕,sleep重新置1,准备接收地址
knp_rx_return2:
ldp #6
lacl rx_bit_flag ;修改标志位,用于判断接收高、低8位数据
xor #01h
sacl rx_bit_flag
b sci_return
*********************************************************
*********************************************************
***********转速环积分系数********************************
speed_kni:
lacl option
sub #43h
bcnd speed_knd,neq
ldp #DP_PF1
splk #0023h,SCICTL1 ;sleep位清0,接收数据
b sci_return
********************************************************
kni_rx: ;地址字节相符后,knp_rx作为数据接收标识
ldp #DP_PF1
lacl SCIRXBUF ;读取数据字节
and #00ffh
ldp #6
bit rx_bit_flag,BIT0 ;读取高8位字节
bcnd kni_high8_rx,ntc
b kni_low8_rx ;读取低8位字节
kni_high8_rx:
sacl ref_rx_h ;存储高8位后,修改rx_bit_flag标志,并返回。
b kni_rx_return2
kni_low8_rx:
sacl ref_rx_l ;存储低8位
lacc ref_rx_h,8
add ref_rx_l ;读取完整字符
bit option_flag,BIT0 ;option_flag的bit0=1,表示第1次接收的数据
bcnd kni_rx1,tc ;bit0=0,表示第2次接收的数据
b kni_rx2
kni_rx1:
ldp #6
sacl f_ref_rx1 ;获取第1次比例系数
ldp #DP_PF1
splk #0027h,SCICTL1 ;第1次数据接收完毕,sleep置1,准备接收地址
b kni_rx_return2 ;修改rx_bit_flag标志,并返回。
kni_rx2:
sub f_ref_rx1 ;第2次接收数据与第1次接收数据比较
bcnd kni_rx_end,eq
b kni_rx_return1
kni_rx_end: ;相等,则赋给kn_p,参与运算。
lacl f_ref_rx1
sacl Kn_i
kni_rx_return1: ;不相等,则f_ref_rx数值不变,并返回等待新数据输入。
ldp #DP_PF1
splk #0027h,SCICTL1 ;数据接收完毕,sleep重新置1,准备接收地址
kni_rx_return2:
ldp #6
lacl rx_bit_flag ;修改标志位,用于判断接收高、低8位数据
xor #01h
sacl rx_bit_flag
b sci_return
********************************************************
********************************************************
**********转速环微分系数接收****************************
speed_knd:
lacl option ;检测地址字符是否是44h
sub #44h
bcnd q_axis_kqp,neq ;不相等,则检测下一个
ldp #DP_PF1
splk #0023h,SCICTL1 ;相等,则sleep位清0,准备接收数据
b sci_return ;返回
********************************************************
knd_rx: ;地址字节相符后,knp_rx作为数据接收标识
ldp #DP_PF1
lacl SCIRXBUF ;读取数据字节
and #00ffh
ldp #6
bit rx_bit_flag,BIT0 ;读取高8位字节
bcnd knd_high8_rx,ntc
b knd_low8_rx ;读取低8位字节
knd_high8_rx:
sacl ref_rx_h ;存储高8位后,修改rx_bit_flag标志,并返回。
b knd_rx_return2
knd_low8_rx:
sacl ref_rx_l ;存储低8位
lacc ref_rx_h,8
add ref_rx_l ;读取完整字符
bit option_flag,BIT0 ;option_flag的bit0=1,表示第1次接收的数据
bcnd knd_rx1,tc ;bit0=0,表示第2次接收的数据
b knd_rx2
knd_rx1:
ldp #6
sacl f_ref_rx1 ;获取第1次比例系数
ldp #DP_PF1
splk #0027h,SCICTL1 ;第1次数据接收完毕,sleep置1,准备接收地址
b knd_rx_return2 ;修改rx_bit_flag标志,并返回。
knd_rx2:
sub f_ref_rx1 ;第2次接收数据与第1次接收数据比较
bcnd knd_rx_end,eq
b knd_rx_return1
knd_rx_end: ;相等,则赋给kn_p,参与运算。
lacl f_ref_rx1
ldp #DP_BSS2
sacl Kn_d
knd_rx_return1: ;不相等,则f_ref_rx数值不变,并返回等待新数据输入。
ldp #DP_PF1
splk #0027h,SCICTL1 ;数据接收完毕,sleep重新置1,准备接收地址
knd_rx_return2:
ldp #6
lacl rx_bit_flag ;修改标志位,用于判断接收高、低8位数据
xor #01h
sacl rx_bit_flag
b sci_return
*********************************************************
*********************************************************
*********q轴比例系数接收*********************************
q_axis_kqp:
lacl option ;检测地址字符是否是45h
sub #45h
bcnd q_axis_kqi,neq ;不相等,则检测下一个
ldp #DP_PF1
splk #0023h,SCICTL1 ;相等,则sleep位清0,准备接收数据
b sci_return ;返回
********************************************************
kqp_rx: ;地址字节相符后,knp_rx作为数据接收标识
ldp #DP_PF1
lacl SCIRXBUF ;读取数据字节
and #00ffh
ldp #6
bit rx_bit_flag,BIT0 ;读取高8位字节
bcnd kqp_high8_rx,ntc
b kqp_low8_rx ;读取低8位字节
kqp_high8_rx:
sacl ref_rx_h ;存储高8位后,修改rx_bit_flag标志,并返回。
b kqp_rx_return2
kqp_low8_rx:
sacl ref_rx_l ;存储低8位
lacc ref_rx_h,8
add ref_rx_l ;读取完整字符
bit option_flag,BIT0 ;option_flag的bit0=1,表示第1次接收的数据
bcnd kqp_rx1,tc ;bit0=0,表示第2次接收的数据
b kqp_rx2
kqp_rx1:
ldp #6
sacl f_ref_rx1 ;获取第1次比例系数
ldp #DP_PF1
splk #0027h,SCICTL1 ;第1次数据接收完毕,sleep置1,准备接收地址
b kqp_rx_return2 ;修改rx_bit_flag标志,并返回。
kqp_rx2:
sub f_ref_rx1 ;第2次接收数据与第1次接收数据比较
bcnd kqp_rx_end,eq
b kqp_rx_return1
kqp_rx_end: ;相等,则赋给kn_p,参与运算。
lacl f_ref_rx1
sacl Kq_p
kqp_rx_return1: ;不相等,则f_ref_rx数值不变,并返回等待新数据输入。
ldp #DP_PF1
splk #0027h,SCICTL1 ;数据接收完毕,sleep重新置1,准备接收地址
kqp_rx_return2:
ldp #6
lacl rx_bit_flag ;修改标志位,用于判断接收高、低8位数据
xor #01h
sacl rx_bit_flag
b sci_return
*********************************************************
*********************************************************
*********q轴积分系数接收*********************************
q_axis_kqi:
lacl option ;检测地址字符是否是45h
sub #46h
bcnd q_axis_kqd,neq ;不相等,则检测下一个
ldp #DP_PF1
splk #0023h,SCICTL1 ;相等,则sleep位清0,准备接收数据
b sci_return ;返回
********************************************************
kqi_rx: ;地址字节相符后,knp_rx作为数据接收标识
ldp #DP_PF1
lacl SCIRXBUF ;读取数据字节
and #00ffh
ldp #6
bit rx_bit_flag,BIT0 ;读取高8位字节
bcnd kqi_high8_rx,ntc
b kqi_low8_rx ;读取低8位字节
kqi_high8_rx:
sacl ref_rx_h ;存储高8位后,修改rx_bit_flag标志,并返回。
b kqi_rx_return2
kqi_low8_rx:
sacl ref_rx_l ;存储低8位
lacc ref_rx_h,8
add ref_rx_l ;读取完整字符
bit option_flag,BIT0 ;option_flag的bit0=1,表示第1次接收的数据
bcnd kqi_rx1,tc ;bit0=0,表示第2次接收的数据
b kqi_rx2
kqi_rx1:
ldp #6
sacl f_ref_rx1 ;获取第1次比例系数
ldp #DP_PF1
splk #0027h,SCICTL1 ;第1次数据接收完毕,sleep置1,准备接收地址
b kqi_rx_return2 ;修改rx_bit_flag标志,并返回。
kqi_rx2:
sub f_ref_rx1 ;第2次接收数据与第1次接收数据比较
bcnd kqi_rx_end,eq
b kqi_rx_return1
kqi_rx_end: ;相等,则赋给kn_p,参与运算。
lacl f_ref_rx1
sacl Kq_i
kqi_rx_return1: ;不相等,则f_ref_rx数值不变,并返回等待新数据输入。
ldp #DP_PF1
splk #0027h,SCICTL1 ;数据接收完毕,sleep重新置1,准备接收地址
kqi_rx_return2:
ldp #6
lacl rx_bit_flag ;修改标志位,用于判断接收高、低8位数据
xor #01h
sacl rx_bit_flag
b sci_return
*********************************************************
*********************************************************
*********q轴微分系数接收*********************************
q_axis_kqd:
lacl option ;检测地址字符是否是47h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -