如下图所示,VCC=12V,RB1=30kΩ,RB2=10kΩ,RC=2kΩ,RE=1kΩ,RL=3kΩ,UBE = 0.7V,ß = 50

如下图所示,VCC=12V,RB1=30kΩ,RB2=10kΩ,RC=2kΩ,RE=1kΩ,RL=3kΩ,UBE = 0.7V,ß = 50,第1张

PIC16F877A单片机是MicroChip公司的中档产品,它采用14位的RISC指令系统,内部集成了A/D转换器、EEPROM、模拟比较器、带比较和捕捉功能的定时器/计数器、PWM输出,异步串行通信( USART)电路等。

1).程序存储器和堆栈PIC16F877A单片机内部具有8K×14位的Flash程序存储器,程序存储器具有13位宽的程序计数器PCo程序存储器的地址范围为OOOOH—1FFFH。由程序计数器提供13条地址线进行单元选择,每个单元宽14位(即PIC16F877A的指令字节宽度为14位),能够存放一条PIC单片机系统指令。

在系统上电或其他复位情况下,程序计数器均从OOOOH地址单元开始工作。如果遇到调用子程序或系统发生事件中断时,将把当前程序断点处的地址送入8级×14位的堆栈区域进行保护。堆栈是一个独立的存储区域,在调用的子程序或中断服务程序执行完后,再恢复断点地址。通过14位程序总线,取出对应程序指令的机器码,送入指令寄存器,将组成的 *** 作码和 *** 作数进行有效分离。如果 *** 作数为地址,则进入地址复用器;如果 *** 作数为数据,则进入数据复用器。而 *** 作码将在指令译码和控制单元中转化为相应的功能 *** 作。

PIC的多数指令均是顺序执行,即使条件跳转也是隔行间接跳转。具有大范围转移功能的指令只有两条:无条件转移GOTO语句和调用子程序CALL语句。但它们受到2KB范围的约束。所以必须将整个程序存储器以2KB为单位进行分页。如下图所示,8KB程序存储器共分作4页,分别称为页0、页1、页2和页3。

PIC16F877A单片机的上电复位地址是OOOOH,中断入口地址是0004H,中断产生时PC指针会自动指向该地址。在进行中断应用时,特别是涉及多个中断同时打开时,必须要逐个对中断标志位( XXIF)进行判断。编程时,在0000H~0003H单元内要放置一条GOTO跳转指令,跳转到主程序,以避开0004H存储器单元。

2).数据存储器PIC单片机的数据存储器与传统的MCS-51单片机一样,在配置结构上可分为通用寄存器和特殊功能寄存器两大类。数据存储器的每个存储单元除具备普通存储器功能之外,还能实现移位、置位、复位和位测试等通常只有寄存器才能完成的 *** 作,功能非常强大。PIC16F877A单片机RAM数据存储器与程序存储器一样,在其51 2个地址空间( 000H—1FFH)进行类似区域划分,分为4个体( Bank),从左到右分别记为体0、体1、体2和体3,每个“体”均为128×8位宽的存储单元。特殊功能寄存器安排在低位地址存储单元,通用寄存器在高位地址存储单元。下图是PIC16F877A的寄存器组映射图,对通用寄存器可以直接进行访问,也可以通过寄存器FSR间接访问。

也就汇编的头文件PIC16F877Ainc和C语言的pic1687xh这两种文件。

想要找汇编的头文件,只要你的电脑装了MPLAB就行,直接在MPLAB的安装目录下找即可,比如我的MPLAB750是装在D盘的,我要找这个汇编的头文件就是在D:\Program Files\Microchip\MPASM Suite这个目录里。 而PIC单片机官方没有出针对PIC16F877A的C语言编译器,一般很多人都用PICC编译器,我电脑上的PICC850也装在D盘,D:\HT-PIC\include下找就行pic1687xh

主要区别,887是纳瓦系列,功耗比877或877a要低;

887有内部RC振荡器,887/887A没有内部振荡器;

887有一个普通CCP模块,一个增强型CCP模块,877A只有两个普通的CCP模块;

887有十四个10位AD输入通道,877只有八个10位AD输入通道

887可以使用内部复位电路(RE3可以做IO或者做复位引脚),877A无此功能;

还有其他的东西,在实际的使用中,你要对着DATASHEET来看(特别是IO口的使用,不同的型号IO口内部结构都可能不太一样,认真看datasheet),887有中文的datasheet,去这里下载chinese版本的:>

4相4拍步进电机,步进角为75

步进电机驱动口连接在RA0-RA3

include<p16f877ainc> ;包含877A的头文件

;__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC

;芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡

#define step1 9h ;转动第1步驱动信号(不同的电机,可以引出线顺序不一样)

#define step2 0ch ;转动第2步驱动信号(本程序以“常州市丰源微特电记有限公司的35BY48S053”电机为基础)

#define step3 6h ;转动第3步驱动信号

#define step4 3h ;转动第4步驱动信号

count equ 20h

org 00h ;复位入口

nop ;ICD所需要的空指令

goto main ;跳转到主程序

org 05h

;主程序

main

banksel adcon1

movlw 07h

movwf adcon1 ;设置所有A口为普通数字口

banksel trisa

clrf trisa ;设置A口为输出

clrf status

clrf porta

movlw 12 ;电机旋转一周需循环次数 360/(754)

movwf count

loop

movlw step1 ;第1步

movwf porta

call delay

movlw step2 ;第2步

movwf porta

call delay

movlw step3 ;第3步

movwf porta

call delay

movlw step4 ;第4步

movwf porta

call delay

decfsz count,1 ;是否旋转完一周

goto loop ;否,继续转动

clrf porta ;是,停止转动

goto $-1 ;停机

;延时程序

;控制输出的频率

delay

movfw 0FH

movwf 21h

movlw 0ffh

movwf 22h

decfsz 22h,1

goto $-1

decfsz 21h,1

goto $-5

return

;源程序结束

end

以上就是关于如下图所示,VCC=12V,RB1=30kΩ,RB2=10kΩ,RC=2kΩ,RE=1kΩ,RL=3kΩ,UBE = 0.7V,ß = 50全部的内容,包括:如下图所示,VCC=12V,RB1=30kΩ,RB2=10kΩ,RC=2kΩ,RE=1kΩ,RL=3kΩ,UBE = 0.7V,ß = 50、求pic16f877a的编译器,我这找不到他的头文件、高手你好,单片机PIC16F887与PIC16F877A主要有什么区别编程时要注意哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9276262.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存