采用移位减法的算法。源码如下:
1 ;//////////////////////////////////////////////////////////////////////////////
2 ;函数: div_u24_u8
3 ;描述: 无符号双字节除以单字节
4 ;入口: (R5,R6,R7)/(R0)
5 ;出口: (R5,R6,R7).(R4)
6 ;注意: 余数在r5;OV=1时表示溢出
7 ;影响: A,B,R0,R4,R5,R6,R7
8 div_u24_u8: mov r4,#0
9 mov b,#24
10 #ifdef __SPEED_P__
11 mov a,r5 ;高字节小于除数的时候,只要移位16次
12 jz _du248_line_03
13 clr c
14 subb a,r0
15 jnc _du248_loop_00
16 mov b,#16
17 clr a
18 xch a,r7
19 xch a,r6
20 xch a,r5
21 xch a,r4
22 sjmp _du248_loop_00
23
24 _du248_line_03: mov a,r6
25 jz _du248_line_04
26 clr c
27 subb a,r0
28 jnc _du248_loop_00
29 mov b,#8 ;高字节=0,中字节小于除数的时候,只要移位8次
30 clr a
31 xch a,r7
32 xch a,r5
33 xch a,r6
34 xch a,r4
35 sjmp _du248_loop_00
36
37 _du248_line_04: mov a,r7 ;高字节=0,中字节=0
38 mov b,r0
39 div ab
40 mov r4,b
41 mov r7,a
42 sjmp _du248_line_05
43 #endif
44 _du248_loop_00: clr c
45
46 mov a,r7 ;向左移位
47 rlc a
48 mov r7,a
49
50 mov a,r6
51 rlc a
52 mov r6,a
53
54 mov a,r5
55 rlc a
56 mov r5,a
57
58 mov a,r4
59 rlc a
60 mov r4,a
61
62 mov F0,c ;移出位=1,或者高字节够减的时候,商+1
63 clr c
64 subb a,r0
65 anl c,/F0
66 jc _du248_line_01
67 mov r4,a
68 inc r7
69 _du248_line_01: djnz b,_du248_loop_00
70
71 _du248_line_05: mov a,r4 ;四舍五入
72 add a,r4
73 jc _du248_line_02
74 subb a,r0
75 jc return_du248
76 _du248_line_02: clr c
77 mov a,#1
78 add a,r7
79 mov r7,a
80 clr a
81 addc a,r6
82 mov r6,a
83 clr a
84 addc a,r5
85 mov r5,a
86
87 return_du248: mov OV,C
88 ret
关键字:无符号 三字节 单字节 51单片机
引用地址:
无符号三字节除以单字节(51单片机,汇编源码)
推荐阅读最新更新时间:2024-03-16 15:31
80C51单片机上电复位和复位延时的时序分析
80C51单片机的上电复位POR(Power On Reset)实质上就是上电延时复位,也就是在上电延时期间把单片机锁定在复位状态上。为什么在每次单片机接通电源时,都需要加入一定的延迟时间呢?分析如下。 1 上电复位时序 在单片机及其应用电路每次上电的过程中,由于电源回路中通常存在一些容量大小不等的滤波电容,使得单片机芯片在其电源引脚VCC和VSS之间所感受到的电源电压值VDD,是从低到高逐渐上升的。该过程所持续的时间一般为1~100 ms(记作taddrise)。上电延时taddrise的定义是电源电压从10% VDD上升到90% VDD所需的时间,如图1所示。 图1 上电延时taddrise和起振延时tosc实测结
[工业控制]
51单片机智能窗帘
电路原理图如下: 10UF电解电容 C2 47UF电解电容 C6 光敏电阻 R10 限位开关 K1, K2 微动开关 KEY1, KEY2, KEY3, KEY4, KEY5 步进电机 P1 DC-002电源插座 P2 LCD1602液晶 Q1 红外一体接头 Q5 10K色环电阻 R1, R4, R5, R6, R8, R9 10K电位器 R2 10k排阻 R3 双掷开关 SW1 2Pi插针 U2 STC89C52单片机 U3 ADC0832模数转换芯片 U4 ULN2003电机驱动芯片 U5 DS1302时钟芯片 U6 12MHZ晶振 Y1 32.768KHZ晶振 Y2 单片机源程序如下
[单片机]
用89C51单片机设计数字视频监控系统
键盘是数字视频监控录像系统中最重要的输入设备之一,是人机接口的重要组成部分。目前常用的工业控制计算机键盘除配置电子锁开关防止非法键盘输入外,与 PC键盘并没有多大区别。这种键盘不仅键数多,操作不灵活,而且通常只能作为输入设备,主机无法通过键盘与外设进行通信。本文在分析PC机键盘通信方式的基础上,设计出以89C51单片机为核心的数字视频监控系统键盘及报警控制卡,该卡具有键盘通信和输入输出报警两种功能,采用标准PCI卡的结构,但不占用主机硬件资源。其中,报警部分有4 路输入和4路输出,可以与标准的报警传感器相连;键盘部分有16个键,通信方式与PC机完全兼容。采用这种控制卡,不仅可以节省视频监控系统中常用的专用报警解码器,而且能够实
[单片机]
★★51单片机8*8点阵 打飞机 贪吃蛇游戏★★
需要材料清单: 焊接飞线 1卷 洞洞板(7*9cm) 1块 单片机stc89c52 1片 晶振11.0592M 1个 瓷片电容 若干 轻触按键 4个 自锁按键 1个 电池盒 1个 排针1*40 1排 排座1*40 1排 8*8点阵 1个 40脚IC座 1个 排阻 1个 两个小视频: 贪吃蛇演示: http://www.letv.com/ptv/vplay/24645710.html 打飞机演示: http://www.letv.com/ptv/vplay/24645546.html
[单片机]
51单片机ADC0804模数转换学习
数模转换器ADC0804与单片机连接的原理图: 这TX-1C实验板上的ADC0804和单片机连接的电路原理图。 左边的是ADC0804,右边的是74HC573锁存器,锁存器同时又连接了单片机没画出。ADC0804的引脚CSAD是片选引脚,因为是低电平有效所以当 送0时,我们就可以选中它工作了。RD也是低电平有效,是读信号的,WR也是低电平有效,当送0时就可以启动A/D开始转换了。INTR是转换结 束引脚,同样也是低电平有效,当INTR为0时,表示转换结束了。DB0-DB7是转换后的数字信号输出端口。AGND和DGND是接地的。CLK R和 CLK IN(即19和4引脚)是用来给ADC0804产生内部时钟脉冲的
[单片机]
51单片机之中断的实现过程
我们首先需要了解什么是中断? 中断是指cpu在执行某一过程中由于外界原因必须暂停现在的事情,处理别的事情,处理完了再回去执行暂停的事情。 中断的优点? 1.分时操作。 2.实时响应 3.可靠性高 中断中用到的寄存器: IE寄存器: 1.单路开关:EX0 ET0 EX1 ET1 ES EX0:外部中断0允许位 ET0:定时/计数器T0中断允许位 EX1:外部中断1允许位 ET1:定时/计数器T1中断允许位 ES:串行口中断允许位 2.总开关 EA:CPU中断允许位 EA=1打开 IP寄存器: 作用是选择优先级的,解决中断优先级问题。 IT0寄存器:选择低电平有效还是下降沿有效,上电默认电平触发方式,IT0=1是下降沿有效
[单片机]
分享一个51单片机直流电机调速源程序
帮助新手更快掌握学习关于51单片机模拟PWM波进行直流电机调速的系统设计 单片机源程序如下: /*******************************************************************/ /* 程序名:PWM直流电机调速 */ /* 晶振:11.00592 MHz CPU型号:AT89C51 */ /* 直流电机的PWM波控制,可以直接的调速从0到20级的调速 */ /*****************************************************************/ #include reg51.h #define TH0_TL0 (655
[单片机]
51单片机实验(一)定时/计数器及其中断
我们这学期开了单片机的课,不知道为什么我们要用汇编语言写程序,感觉汇编程序真的挺难写的,所以把实验记录下来把。 如果没有学过汇编的小伙伴建议先去熟悉一下简单的汇编指令,之前简单的实验我就不记录了,我们从定时计数器实验开始吧。 首先来回顾一下和中断,定时有关的知识 51单片机中断级别 中断源 中断允许寄存器IE EA---全局中允许位。 EA=1,打开全局中断控制,在此条件下,由各个中断控制位确定相应中断的打开或关闭。 EA=0,关闭全部中断。 -------,无效位。 ET2---定时器/计数器2中断允许位。 EA总中断开关,置1为开; ET2=1,打开T2中断。 EX0为外部中断0(INT0)开关,…… ET
[单片机]