最近刚学PIC单片机,有个程序看不懂,请高手帮下,越详细越好:

作者&投稿:仉支 (若有异议请与网页底部的电邮联系)
PIC单片机C编程问题,我刚从转来学这一块,以下是写的第一个程序,高手帮忙看看!!~

我看你程序中只用到了Array0,将其余的不用Array1、2、3注释掉,编译可以通过。

可能是由于RAM空间太小了,你定义变量占用空间太多了

建议:仔细看看datasheet关于空间管理部分

这是一个计时器,类似于时钟的一个程序,用TMR0延时10ms的基本延时,对1s(延时100次)和10秒计数,每达到10s时,引脚RC5的电平翻转(即高变低,低变高,这个引脚可能是接发光管).
变量i就是累计延时10ms的次数,sec就累计秒数.
程序中采用TMR0中断方式,所以表面上看是死循环,实际是每隔10ms中断一次,进入中断服务程序interrupt tmr1().
初始化程序void init()是对定时器TMR0的分频比设计,引脚RC5的设置,中断的设置.

INDF 和 FSR两个寄存器构成了一个间接寻址的作用。
FSR有点像C语言中的指针,INDF是一个虚拟的寄存器,对它操作其实是对FSR锁指向的内存单元操作。
简单的说,当20h这个数赋给了FSR,那么就是FSR作为指针指向了内存中地址为20h的这个单元(以下就用<20h>来表示这个单元,以区别十六进制的20h这个数值),此时INDF就被映射到<20h>。
从头说起:
1:W被赋值20h这个数;2:FSR被赋值和W寄存器相同的数20H,此时FSR指向了<20h>;3:此时W寄存器因为没被改变过,所以其数值依然是十六进制的20h那么MOVWF 20H其实就是把W里的数据赋值给<20h>这个内存单元 也就是 <20h> = 20H ;
4:重点来了 INCF INDF,让INDF自加1。前面说了对INDF操作其实就是对FSR所指向的单元操作,也就等同于 INCF <20h>(真正程序里不能这么写的,因为<20h>这杨写法是错误的) 类似C与语言中的<20h>++
5:FSR自加1,FSR内部的值等于21h所以FSR指向了<21h>这个内存单元。
6:<20h>单元的数值高4位和低4位转换一下数据。所以 <20h> = 02h
7:把<20h>的内容赋值给W寄存器,所以w = 02h
8:FSR此时 等于21h ,把21h和W的02h做与运算,结构 0 赋值给FSR。


求一个PIC单片机学习的网站
推荐一个学习PIC单片机的网站:Microchip Technology的官方网站。Microchip Technology是PIC单片机的制造商,其官方网站提供了详尽的PIC单片机学习资源。在官网上,可以找到PIC单片机的产品手册、技术指南、参考设计、软件编程工具以及应用案例等。这些资源对于初学者和有经验的工程师来说都非常有用。对于初学者,可...

想学pic单片机
1、MPLAB IDE,这个是所有PIC单片机的开发平台,目前最高版本是8.83,这个软件是免费的,可以到MICROCHIP公司网站上下载;2、PICC,这个是PIC 16系列单片机的C编译器,建议直接学C,所以要用它,这个是收费软件,但网上可以找到的最高版本破解版,版本是9.8,上网可以找到;3、PROTEUS,这个是目前世界上...

本人正在自学PIC单片机,有51的基础只会C语言,在学PIC的过程中理解如何控...
用PICC吧,PICC是可以有试用版本的,而XC8等编译器其实很少用,(主要是不是破解)。

没读过大专的人学PIC单片机能找到相关的工作吗
没有大的影响,现在很多大学生的文凭是混出来的,招工单位不会因持有某文凭而确定聘用,相反,学历不高且有能力的反而受欢迎,以前出现过北大毕业生被拒至门外的现象,招工牌明确标注:北大毕业生免谈;因其太注重学历而不注重能力所导致的;学单片机很好,但不能先学PIC,此芯片是一次编程的,成本太...

最近刚学PIC单片机,有个程序看不懂,请高手帮下,越详细越好:
1:W被赋值20h这个数;2:FSR被赋值和W寄存器相同的数20H,此时FSR指向了<20h>;3:此时W寄存器因为没被改变过,所以其数值依然是十六进制的20h那么MOVWF 20H其实就是把W里的数据赋值给<20h>这个内存单元 也就是 <20h> = 20H ;4:重点来了 INCF INDF,让INDF自加1。前面说了对INDF操作其实...

初学pic单片机,用什么教程比较快速?
买周坚的《PIC单片机轻松入门》,用C语言讲的,可带你轻松入门,对数据手册详解的可看李学海的《PIC单片机实用教程》-有基础篇和提高篇两本,很经典的书。

一,学习PIC单片机( 者说单片机)有前途吗
当然可以前途啊 可以先从51单片机开始学习。自己弄一个学习板 类似于吴鉴鹰。

自学PIC单片机,有51和C语言基础,推荐本教材,谢谢各位大侠!
强力推荐北航的《PIC16系列单片机C程序设计与PROTEUS仿真》一书,其中有大量的实例,读者如没有硬件条件下,照样可以按照其中的例子进行PROTEUS仿真。

PIC单片机入门与实战内容简介
全书结构清晰,内容详尽,涵盖了从基础概念到实际应用的各个环节。读者将从 PIC 单片机的结构和工作原理入手,逐步深入了解其功能模块,如 I\/O 接口、定时器、中断系统等,并通过丰富的实例学习如何使用汇编指令和 C 语言进行编程。此外,书中还提供了各种设计实例,以帮助读者巩固理论知识,提高实际操作...

你好 我想学习pic 不知道要准备什么
具体用什么,就要看所做的控制系统的需求。如果你只是想入门,推荐用PIC16F877或者PIC16F887。并且pic单片机不像51单片机那样可以弄个串口ISP电路就能下载程序,一般做pic单片机下载程序是需要专用的编程器或者调试器。比如ICD2什么的。当然网上也有山寨版的JMD简易下载器的电路,这个电路不是太稳定。

太湖县15379691646: 最近学习单片机 有个程序调试不出来 有错误 请各位哥哥姐姐帮帮小弟的忙 -
宠洪盐酸: 多个文件时,要用一个头文件,声明所用的函数,如果有变量在不同的文件件传递值,那还要用extern来声明变量,在MAIN函数中包括这个头文件就可以了啊...你的问题应该是出在这里的..没有这个头文件,是不行的啊...

太湖县15379691646: 大家好,我是初学PIC12F683单片机,我编写了一个按键扫描程序,不知道怎么哪里出错,一直实现不了,请大家 -
宠洪盐酸: #include void delay(int x){ int a,b; for(a=x;a>0;a--) for(b=110;b>0;b...

太湖县15379691646: PIC单片机 c语言编程 -
宠洪盐酸: 以DIP-40的PIC16F877A来举例 灯闪动频率为1秒void Delay_Ms(unsigned char n); void m...

太湖县15379691646: PIC单片机 -
宠洪盐酸: 完全可以不买书的,你不可能用什么单片机就去买什么书的,那不是一个入门的程序员,51单片机也很广,如果你学过STC51或者AVR之类的,完全可以看PIC手册.即使你入门的是AT89C51,那也不用担心,在网上看一个简单的PIC程序,你就知道,其实都一样的.

太湖县15379691646: 刚接触PIC单片机,想请问一下使用PIC单片机用什么软件编程比较好一点, -
宠洪盐酸: 一楼肯定是没用过PIC单片机的人.KEIL这个软件是比较好,但它并不支持PIC单片机的开发.不懂不要瞎回答.二楼说的才是正道.PIC有专用的MPLAB软件,去Microchip的官网那里有免费下载的.

太湖县15379691646: PIC单片机定时器中断程序怎么进不去? -
宠洪盐酸: 他用EI();打开全局中断的 首先你仔细调试看看TI的计数器是否能溢出 溢出后中断标志是否为1,为1了清零; T1中断使能相关:GIE,PEIE,TMRIE这三个 你在特殊寄存器中单步调试仔细看看

太湖县15379691646: 求助个pic单片机C程序问题 -
宠洪盐酸: 你的问题,提问方式不对.程序是用来实现某一功能的.如果没有具体的功能.很多东西,不能理解清楚.1、说明寄存器的位.2、/255*5,你换个角度理解就行了.5V/255*实际AD,得到一...

太湖县15379691646: PIC单片机烧写器,烧不进程序怎么回事 -
宠洪盐酸: 打开编程软件 插上编程器看是不是有反应,没反应就是编程器的问题,有反应接上板子看是不是有电,没电把设置里的power打开 如果编程器没问题,板子也有电,点下programer中重连 如果还没反应 就看看是不是那个单片机型号, 如果编程器没反应也要设置是哪种编程器.

太湖县15379691646: pic单片机反汇编出的程序如何看明白 -
宠洪盐酸: 用MPLAB软件把反汇编出的程序(一般为16进制的数据,扩展明是hex)导入到MPLAB软件中,然后另存为asm格式即可成为能读懂的汇编程序了

太湖县15379691646: PIC单片机C程序的问题 -
宠洪盐酸: 学单片机一定要先看单片机的内存表,即map,.知道单片机内部的寄存器设置,及每个寄存器地址.上面的程序就是直接对寄存器操作,这是单片机学习较高的境界.(&adr)*8其实是对adr进行移位操作,8是2的三次方.即是把adr的地址左移三位.可以看成是:基地址+偏移地址的方式来取地址.bit应该是3位的二进制变量,PORTB口是PIC单片机的B类IO口,一般单片机都是按8个口一个BANK,PORTB口即从(PORTB_0,,,PORTB_7,共8个IO口),通过上述定义就取到了PORTB每个IO口的地址.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网