专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
PIC单片机
PIC汇编学习时的小问题(如何取模)
2020-02-08 12:17
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
2891
11
11
小弟最近偶然机会接触了PIC汇编,以前就听说汇编的重要,一学才知道里面内涵。
所以决定把汇编学好。
正的驱动数码管,要求num从0加到100,再从0加,如此反复。
C语言很简单,shi=num/10 ,ge=num%10;
可PIC汇编该怎么弄啊,知道的帮小弟一下。谢谢
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
woshigeshuai
2020-02-09 13:25
把 PIC单片机的 STATUS寄存器 的Z ,C 位搞熟练后。
按照自己的思路搞。
用减法。比如num-10 ,然后判断C位和Z位 就知道num是大于10,还是小于10,还是等于10
这样就OK了。
num=27 ,num-10,判断C位,C=1,说明num>=10.C=0,说明num<10,然后shi++
然后再num这时候是17,再num-10,判断。就知道了。希望对初学汇编的朋友有帮助
MOD
;{***********************MOD****************
INCF NUM,F ;NUM+=NUM
MOVLW .10
XORWF NUM,W ;W=W^20
BZ Z_1
RETURN
Z_1
CLRF NUM
INCF NUM1,F
CLRF SHI
CLRF GE
MOVF NUM1,W
MOVWF GE
MOVLW .100
XORWF NUM1,W
BZ Z_1_1
GOTO Z_0 ;Z==1 GOTO Z_1_1
Z_1_1
CLRF NUM1 ;IF(Z)NUM1=0
CLRF GE
Z_0
; MOVF NUM1,W
; MOVWF GE ;SAVE NUM1,IF NUM1<10
MOVLW .10
SUBWF GE,F ;GE=GE-10
BC C1 ;IF(C==1)
MOVLW .10
ADDWF GE,F ;GE=GE+10
RETURN ;IF(C==0) OUT
C1
BZ Z1
GOTO Z0
Z1
INCF SHI,F
RETURN
Z0
INCF SHI,F
GOTO Z_0
;}**********************************MOD*************
加载中...
查看其它11个回答
一周热门
更多
>
相关问题
PIC单片机不同的IO口驱动74HC573驱动共阴极的数码管,有的段不亮
1 个回答
一种简单精确的pic延时方法
21 个回答
谁熟悉PIC的产品发布时间的,帮看看PIC18F47K40啥版本IDE能开发
12 个回答
求AN1078对应的源代码下载地址
5 个回答
PIC单片机应用技巧
4 个回答
相关文章
一种用PIC单片机主时钟驱动的老式挂钟
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
PIC单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
按照自己的思路搞。
用减法。比如num-10 ,然后判断C位和Z位 就知道num是大于10,还是小于10,还是等于10
这样就OK了。
num=27 ,num-10,判断C位,C=1,说明num>=10.C=0,说明num<10,然后shi++
然后再num这时候是17,再num-10,判断。就知道了。希望对初学汇编的朋友有帮助
MOD
;{***********************MOD****************
INCF NUM,F ;NUM+=NUM
MOVLW .10
XORWF NUM,W ;W=W^20
BZ Z_1
RETURN
Z_1
CLRF NUM
INCF NUM1,F
CLRF SHI
CLRF GE
MOVF NUM1,W
MOVWF GE
MOVLW .100
XORWF NUM1,W
BZ Z_1_1
GOTO Z_0 ;Z==1 GOTO Z_1_1
Z_1_1
CLRF NUM1 ;IF(Z)NUM1=0
CLRF GE
Z_0
; MOVF NUM1,W
; MOVWF GE ;SAVE NUM1,IF NUM1<10
MOVLW .10
SUBWF GE,F ;GE=GE-10
BC C1 ;IF(C==1)
MOVLW .10
ADDWF GE,F ;GE=GE+10
RETURN ;IF(C==0) OUT
C1
BZ Z1
GOTO Z0
Z1
INCF SHI,F
RETURN
Z0
INCF SHI,F
GOTO Z_0
;}**********************************MOD*************
一周热门 更多>