历史上的今天
返回首页

历史上的今天

今天是:2024年12月06日(星期五)

正在发生

2019年12月06日 | PIC单片机基础学习之程序设计(一)

2019-12-06 来源:elecfans

1、PIC单片机程序的基本格式

先介绍二条伪指令:

EQU ——标号赋值伪指令

ORG ——地址定义伪指令

PIC16C5X单片机在RESET后指令计算器PC被置为全“1”,所以PIC16C5X几种型号芯片的复位地址为:

PIC16C54/55:1FFH

PIC16C56:3FFH

PIC16C57/58:7FFH

一般来说,PIC单片机的源程序并没有要求统一的格式,大家可以根据自己的风格来编写。但这里我们推荐一种清晰明了的格式供参考。

;--------------------------------------

;名称定义和变量定义

;--------------------------------------

F0    EQU  0

RTCC   EQU  1

PC    EQU  2

STATUS  EQU  3

FSR   EQU  4

RA    EQU  5

RB    EQU  6

RC    EQU  7

PIC16C54 EQU 1FFH ;芯片复位地址

PIC16C56 EQU 3FFH

PIC16C57 EQU 7FFH

;-----------------------------------------

ORG PIC16C54 GOTO MAIN   ;在复位地址处转入主程序

ORG   0          ;在0000H开始存放程序

;-----------------------------------------

;子程序区

;-----------------------------------------

DELAY MOVLW 255

RETLW 0

;------------------------------------------

;主程序区

;------------------------------------------

MAIN

MOVLW B‘00000000’

TRIS RB       ;RB已由伪指令定义为6,即B口

LOOP

BSF RB,7 CALL DELAY

BCF RB,7 CALL DELAY

GO TO LOOP

;-------------------------------------------

END       ;程序结束

注:MAIN标号一定要处在0页面内。

2、PIC单片机程序设计基础

1) 设置 I/O 口的输入/输出方向

PIC16C5X单片机的I/O 口皆为双向可编程,即每一根I/O 端线都可分别单独地由程序设置为输入或输出。这个过程由写I/O 控制寄存器TRIS f来实现,写入值为“1”,则为输入;写入值为“0”,则为输出。

MOVLW 0FH  ;0000 1111(0FH)

输入 输出

TRIS 6    ;将W中的0FH写入B口控制器,

;B口高4位为输出,低4位为输入。

MOVLW 0C0H ; 11 000000(0C0H)

RB4,RB5输出0 RB6,RB7输出1

2) 检查寄存器是否为零

如果要判断一个寄存器内容是否为零,很简单,现以寄存器F10为例:

MOVF 10,1      ;F10→F10,结果影响零标记状态位Z

BTFSS STATUS,Z    ;F10为零则跳

GOTO NZ        ;Z=0即F10不为零转入标号NZ处程序

┋          ;Z=1即F10=0处理程序

3) 比较二个寄存器的大小

要比较二个寄存器的大小,可以将它们做减法运算,然后根据状态位C来判断。注意,相减的结果放入W,则不会影响二寄存器原有的值。

例如F8和F9二个寄存器要比较大小:

MOVF 8,0       ;F8→W

SUBWF 9,0      ;F9—W(F8)→W

BTFSC STATUS,Z   ;判断F8=F9否

GO TO F8=F9

BTFSC STATUS,C    ;C=0则跳

GO TO F9>F8       ;C=1相减结果为正,F9>F8

GOTO F9<

F9       ;C=0相减结果为负,F9  ┋


推荐阅读

史海拾趣

Hi-Tron Semiconductor Corp公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐中不可或缺的重要设备。从广义上讲,任何与电视机连接的网络终端设备均可视为机顶盒,其发展历程涵盖了从模拟频道增补器到数字卫星、地面及有线电视机顶盒的广泛范畴。而从狭义角度看,机顶盒特指那些具备数字处理能力的设备,如IPTV机顶盒、DVB-S卫星机顶盒、DVB-T地面机顶盒及DVB-C有线电视机顶盒等。

机顶盒的核心功能在于接收并转换数字电视信号,使之能在传统或智能电视上播放。它不仅能接收来自有线电缆、卫星天线及宽带网络的信号,还能提供电子节目指南、网页浏览等增值服务。通过机顶盒,用户能够享受到高清乃至4K超高清的电视节目,体验更为细腻的画面和震撼的音效。此外,机顶盒还具备网络交互能力,支持在线购物、观看网络视频、玩游戏等多元化活动,使电视机从单向接收信息的设备转变为智能互动终端。

随着技术的不断进步,机顶盒正朝着高清化、智能化方向发展。未来,机顶盒将不仅限于基本的信号接收与解码功能,还将融入更多智能推荐、语音识别等先进技术,为用户提供更加个性化、便捷的娱乐体验。总之,机顶盒作为连接电视与互联网的桥梁,正以其丰富的功能和广泛的应用场景,不断满足用户日益增长的娱乐需求。

Burr-Brown公司的发展小趣事

Burr-Brown在音频领域取得了显著的成就。1957年,公司推出的Model 130成为世界上第一个固态运算放大器(op amp),这一技术在现代高级音频系统中仍占据核心地位。1982年,公司发布的16位单片数模转换器(DAC)更是彻底改变了音乐的播放和发行方式,使得音乐可以以高保真度进行复制,并方便地随身携带。Burr-Brown的技术成为优质音频的代名词,赢得了广泛的行业认可。

Goldentech Discrete Semiconductor Inc公司的发展小趣事

进入21世纪后,随着全球电子市场的竞争加剧,Goldentech意识到单靠技术创新已不足以维持其市场地位。因此,公司开始积极寻求与行业领先企业的战略合作。通过与一家知名芯片设计公司的深度合作,Goldentech成功将其高性能离散半导体器件集成到对方的芯片设计中,从而实现了产品的广泛应用。这一合作不仅扩大了Goldentech的市场份额,还提升了其品牌知名度和行业影响力。

Armel Electronics Inc公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。Armel Electronics Inc公司深知此道,始终坚持品质至上的原则。公司从原材料采购到生产流程,再到产品出厂,每一个环节都严格把控,确保产品质量的稳定性和可靠性。这种对品质的执着追求,使得Armel的产品在市场上赢得了良好的口碑,并逐渐树立了公司的品牌形象。

Degson Electronics Co Ltd公司的发展小趣事

为了提高产品的品质和可靠性,Degson积极引进国际先进的管理体系和技术标准。公司通过了ISO9001、ISO14001等国际管理体系认证,并严格按照相关标准进行生产和质量管理。此外,Degson还建立了亚洲首家获得美国UL和德国VDE认可的专业实验室,以确保产品的性能和品质符合国际标准。这些举措使Degson的产品在品质上得到了显著提升,赢得了客户的信任和好评。

Feller US公司的发展小趣事

在经历了多年的发展后,菲斯克逐渐意识到品牌的重要性。为了进一步提升品牌价值和市场影响力,公司决定进行品牌重塑。通过重新设计品牌形象、加强品牌宣传以及推出更具吸引力的产品和服务,菲斯克成功吸引了更多消费者的关注和喜爱。同时,公司还积极拓展市场渠道和合作伙伴网络,通过多元化的营销策略和灵活的渠道策略,成功打开了多个新的市场领域。这些努力不仅提升了公司的市场份额和盈利能力,还为公司的长期发展奠定了坚实的基础。

请注意,以上故事均基于虚构的情境和假设,旨在解释和描述菲斯克(FSR.US)公司可能的发展情况。实际的发展过程可能因各种因素而有所不同。

问答坊 | AI 解惑

求职面试,不被招聘官喜欢的几种人

我们知道,求职面试,招聘者比较看重应试人员的某些优点。如果你具有这些优点,那就可能捷足先登,有被优先择用的可能;用样,招聘者也比较关注应聘者的某些缺点,如果你具有这些缺点,那就可能名落孙山,有被淘汰出局的危险。所以,求职者应该了解 ...…

查看全部问答>

C8051 FO20 SPI口怎么配置

C8051 FO20 SPI口怎么配置 最好有源代码 …

查看全部问答>

uclinux jedce_probe探测ID,变成flash的内容

Flash:两片SST39VF3201 ,一片挂CS0:地址0x80000000 一片挂CS1:地址0x81000000 使用jecdec探测 static struct map_info lpc24xx_map[2] = { {     .name =        \"LPC24XX\",     .bankw ...…

查看全部问答>

现在有一份作51单片机的工作机会,不知该不该去做?

我目前是作java 企业计算方面的软件开发,现在有一份作51单片机的工作机会,不知该不该去做?我想往嵌入式方向转,我的定位是linux+arm,  看网上讲51和arm相差很大,不知我从51开始接近嵌入式开发有没有什么问题?有没有走弯路?   ...…

查看全部问答>

转发:请教:Linux驱动程序中的llseek函数

在Linux下写了一个存储器的驱动程序,需要对这个存储器进行片内寻址(片内地址为16位,分为高8位和低8位两段),用llseek函数实现。 static loff_t   llseek (struct  file* mfile,  loff_t  offset,&nbs ...…

查看全部问答>

USB键盘驱动的问题

在Windows XP下,我插入USB键盘后看到系统在设备管理器中变化了两个,一个是键盘下的KeyBoard Device,一个是人体输入设备下的USB人体输入设备,请问这两个相互之间是怎样联系的啊?? 再者:我在写一个键盘的驱动程序,要求是读取USB键盘数据 ...…

查看全部问答>

evc下怎么编写扩展DLL

我在VC60下面做了个扩展的DLL。VC下一直用得挺好。 但现在要把那个程序移植到EVC下面,界面部分已经移植好了,现在就差这个DLL了, 我按照VC60下面的方法做,不行。 哪位大侠知道EVC下怎么做扩展DLL。…

查看全部问答>

tffs问题.

在shell中,调用tffsshow报告说"通信失败". 问题出在调用i28f128Identify函数卡在flmap上. 什么原因啊?…

查看全部问答>

MTK异常重启分析工具

基于ARM体系,能够自动检测并且记录异常发生位置(非打印trace),并能分析出调用函数栈,误差率…

查看全部问答>

有需要在嵌入系统上接USB无线网卡的吗?

提供专为嵌入系统应用的USB WIFI模块 描述: 华邦处理器,USB 接口,802.11g,提供LINUX 2.4 2.6内核, WINCE 4.2和5.0的驱动。linux的驱动有量的话可提供源码。 联系方式: mail: snfmtc@163.com msn: mikehorse@homail.com …

查看全部问答>