本帖最后由 sjh2100 于 2017-2-9 23:18 编辑
谢谢您的回复 。pgm这样我就理解成programable,wrap如果是溢出,我觉得应该是overflow,Comm_Period4x除以4应该是Divide Comm_Period4x by 4。我能吐槽这个老外英文吗,我都先百度翻译。
我看了一下是除以16,他是用了:
swap A anl A, #00Fh 和
swap A anl A, #00F0h 来实现的。而不是右移4次。右移4次需要多次对C操作。 **********************************麻烦您看看以下几行程序,非s版程序。 ; Load current commutation timing
mov A, Comm_Period4x_H ; Divide 4 times
swap A
anl A, #00Fh
mov Temp2, A;高四位
mov A, Comm_Period4x_H
swap A
anl A, #0F0h
mov Temp1, A;第四位
mov A, Comm_Period4x_L
swap A
anl A, #00Fh
add A, Temp1;+低字节高四位
mov Temp1, A;结果在temp2temp1中。以上没有问题
******************************* mov A, Temp4 ; If erpm below 156k - go to normal case
subb A, #2
jc ($+4) clr Flags0.HIGH_RPM ; Clear high rpm bit
mov Temp1, #2 ; Set timing reduction
mov A, Temp4 ; Divide by 2 4 times这里的除法与上面的很不一样
swap A
mov Temp7, A; ;temp7=低字节高字节
mov Temp4, #0
mov A, Temp3
swap A ;temp3保留高字节
anl A, #0Fh
orl A, Temp7
mov Temp3, A ;temp3=高字节低4位_低字节高四位。感觉这行代码没有完成 Divide by 2 4 times的操作。个人以为是bug。 后面几行如下,应该和除法没关系。 clr C mov A, Temp3 subb A, Temp1 mov Temp3, A jc load_min_time_fast ; Check that result is still positive ******************** 2017——01——10今天下午github无法登陆了!要河蟹? ******************** 2017-02-09 在变量定义区发现了: ISEG AT 080h ; //内部间接寻址绝对数据段 Pgm_Gov_P_Gain: DS 1 ;Programmed governorP gain 故pgm就是Programmed 。
|