INCLUDE"P16F877.INC"
ORG 0000H
GOTO A1
ORG 002BH
A1 MOVLW 00H
MOVWF 40H;数据处理寄存器高位(乘积高8位)
MOVLW 00H
MOVWF 41H;数据处理寄存器低位(乘积高中8位)
MOVLW 0FFH
MOVWF 42H;被乘数高位(乘积低中8位)
MOVLW 0FFH
MOVWF 43H;被乘数低位(乘积低8位)
MOVLW 0FFH
MOVWF 44H;乘数高位
MOVLW 0FFH
MOVWF 45H;乘数低位
MOVLW D'16'
MOVWF 4AH;循环次数--8位二进制数相乘8次4位则4次
A2 CLRF 4BH;清标志
BTFSS 43H,0;判断被乘数第0位是否为0是则不用相加
GOTO A3
MOVFW 45H;不为0则相加
ADDWF 41H,1;乘数低位与处理后数据低位相加数据存回数据处理低位寄存器
MOVFW 44H;
BTFSC STATUS,C;判断是否溢出
INCF 44H,0;是则加1
BTFSC STATUS,Z;判断加1后是否溢出
BSF 4BH,1;是则置为标志
ADDWF 40H,1;乘数低位与处理后数据高位相加上面相加可能溢出所以用ADDC数据存回数据处理高位寄存器
BTFSC 4BH,1;判断溢出标志
BSF STATUS,C;溢出则置位C
A3
RRF 40H,1;先右移高位相加可能溢出RRF循环带C右移
RRF 41H,1;再右移低位把高位的数移入低位
RRF 42H,1;将处理后的数移到被乘数高位
RRF 43H,1;将处理后的数移到被乘数低位
DECFSZ 4AH,1;是否完成
GOTO A2
NOP
NOP
NOP
GOTO $
END
关键字:PIC单片机 65535*65535 子程序
引用地址:
PIC单片机65535*65535子程序
推荐阅读最新更新时间:2024-03-16 14:25
PIC单片机的SPWM控制技术介绍
在UPS等电力电子设备中,控制方法是核心技术。早期的控制方法使得输出为矩形波,谐波含量较高,滤波困难。SPWM技术较好地克服了这些缺点。目前SPWM的产生方法很多,汇总如下。 1)利用分立元件,采用模拟、数字混和电路生成SPWM波。此方法电路复杂,实现困难且不易改进; 2)由SPWM专用芯片SA828系列与微处理器直接连接生成SPWM波,SA828是由规则采样法产生SPWM波的,相对谐波较大且无法实现闭环控制; 3)利用CPLD(复杂可编程逻辑器件)设计,实现数字式SPWM发生器; 4)基于单片机实现SPWM,此方法控制电路简单可靠,利用软件产生SPWM波,减轻了对硬件的要求,且成本低,受外界干扰小。 而当今单片机的应用已经从
[单片机]
PIC单片机如何实现单按键输入LED灯点亮
IO输出和输入 /* 按键连接RB1,点亮LED,PORTA RA0控制输出。按一次点亮,再按一次熄灭,如此循环。 RB外接上拉电阻。 */ #include #define uchar unsigned char #define uint unsigned int // CONFIG #pragma config FOSC = HS // #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = OFF // Power-up TImer Enable bit (PWRT disabled) #p
[单片机]
PIC单片机-定时器的应用
一、利用定时器Timer0的定时功能,设计一个倒计时,显示在数码管上。 #include htc.h #define uint8 unsigned char #define uint16 unsigned int #define SCK_595 RA5 #define RCK_595 RE0 #define SER_595 RC0 __CONFIG(WDTDIS & LVPDIS & HS & PWRTDIS & BORDIS);//设置配置位 //WDTDIS:disable watchdog timer 看门狗禁止 //LVPDIS:low voltage programming disabled
[单片机]
喜欢单片机的同学快来看啊,过来人的经验告白
今天星期六,由于现在处于淡季,星期日不加班,一大早起来就拿着自己新买的移动硬盘把办公室的PIC资料考了回来,在自己寝室的电脑上学开了,既然要努力学就不能一天口号,两天行动。我做好了充分的准备,要把握分分秒秒。 单片机的学习开始是个枯燥的过程,慢慢的熔入起中就会发现其中的乐趣。举个很贴进的例子,当你家的电器全是自己搞的可以遥控的,比如一进门,灯全亮了,在按下遥控,电视,空调全开了,晚上睡觉都不用当心忘记灯没关,只要遥控一按,就OK了,这不是很好吗?这只是一个小小的例子,其实学会单片机还有好多有意思的地方。 在学习单片机时,首先要做的不是去买书,去看书,先要搭建一个学习平台,好比要上网就好有IP一样,所以一个平台的搭建是很有必
[单片机]
PIC单片机浮点数格式与十进制数之间的转换及程序设计
在我们设计的仪表中采用PIC系列单片机,碰到了浮点数的运算问题,查阅其有关资料发现,其浮点数的格式及其与十进制数之间的转换,与我们常用的MCS-51单片机所提供的三字节、四字节浮点数完全不同,本文将说明其浮点数的格式及其与十进制数之间的转换和程序设计步骤。 1 浮点数的格式 Microchip公司单片机所采用的浮点数格式是IEEE-754标准的变异型。32位浮点数格式为: 其中:×表示一位二进制数0或1;eb为指数的偏差;S为浮点数的符号位,S=0为正数,S=1为负数;小数点“·”在符号位S的右边;BY0BY1BY2为尾数的小数部分。 应特别注意: ⑴浮点数隐含其整数部分为1。 ⑵十进制数0的浮点数表示为00H,00H
[单片机]
PIC单片机实现双字节无符号数的除法
编写子程序Div_16,实现双字节无符号数除法。自行定义变量,其中: ACCALO ;存放被除数低 8 位 ACCAHI ;存放被除数高 8 位 ACCBLO ;存放除数 8 位 ACCCLO ;存放余数 8 位 ACCCHI ;存放商 8 位 采用移位法,设被除数为ACCA、除数为ACCBLO、商为ACCCHI(初值为0)、余数为ACCCLO(初值为0)。ACCA由高位至低位依次左移进入ACCCLO单元,每次移位进入后比较ACCCLO单元和ACCBLO的值,如果ACCCLO≥ACCBLO,则将这一位的商单元的值置1,然后从ACCCLO中减去ACCBLO,否则不做操作。直到ACCA全部进入ACCCLO单元为止。此时AC
[单片机]
PIC单片机的各种汇编语言指令的用法解析
工作以来一直使用ST的单片机,其他的单片机虽大致了解但从未认真看过,近几日恰好无事,决定熟悉一下PIC的单片机,于是想将自己从网上或这书本上的东西转下来,予以同一样的初学者共同参考。 PIC的指令系统 PIC 8位单片机共有三个级别,有相对应的指令集。基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。其指令向下兼容。 一、PIC汇编语言指令格式 PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下: 标号 操作码助记符 操作数1,操作数2;注释
[单片机]
Microchip推出针对PIC单片机的协议栈
全球首家为MCU定制DLMS协议栈的半导体公司,协议栈支持范围广泛的能源类型和通信协议之互操作性 全球领先的整合单片机、模拟器件和闪存专利解决方案的供应商——Microchip Technology Inc.(美国微芯科技公司)宣布,与Kalki Communication Technologies Ltd.(Kalkitech)合作推出一款针对16位PIC®单片机(MCU)优化的设备语言报文规范(DLMS)协议栈。DLMS协议已经成为智能表具设计人员实现计量系统互操作性的全球标准选择;其中的计量系统包括大部分能源类型(电、气、热和水)、多种应用(民用、输电和配电)、众多通信媒体(RS-232、RS485、PSTN、GSM、GP
[单片机]