打印
[PIC®/AVR®/dsPIC®产品]

求PIC单片机汇编教程

[复制链接]
4357|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
兄弟姐妹们有没有PIC单片机汇编教程啊?
沙发
moyue| | 2014-6-12 16:40 | 只看该作者
找个小东西做一次,就基本掌握了

使用特权

评论回复
板凳
perry_peng| | 2014-6-12 16:54 | 只看该作者
下个gputils,PIC的指令很少,学起来很容易,主要是要对PIC的寄存器有所了解才学得快。我学的时候先用sdcc写C代码,它会生成asm代码。对照着学习。只用了一两天我就可以直接用gpasm写程序了。

使用特权

评论回复
地板
wangch_sh| | 2014-6-12 17:00 | 只看该作者
李学海写过PIC汇编的书。

使用特权

评论回复
5
yewuyi| | 2014-6-13 08:40 | 只看该作者
张明峰:PIC单片机入门与实战

虽然内容老了些,但讲的很实用。

使用特权

评论回复
6
lijx1223| | 2014-6-13 09:23 | 只看该作者
本帖最后由 lijx1223 于 2014-6-13 09:25 编辑

PIC老了,但它的汇编好学,指令少容易记住,好入门。

使用特权

评论回复
7
yewuyi| | 2014-6-13 10:20 | 只看该作者
lijx1223 发表于 2014-6-13 09:23
PIC老了,但它的汇编好学,指令少容易记住,好入门。

PIC有大把新型号

使用特权

评论回复
8
XIEYUANBIN| | 2014-6-13 11:15 | 只看该作者
总共就30多条指令,你看看数据手册的汇编指令集就可以了。大多数数据手册还是有一些例程的。

使用特权

评论回复
9
px673084941|  楼主 | 2014-6-13 14:44 | 只看该作者
perry_peng 发表于 2014-6-12 16:54
下个gputils,PIC的指令很少,学起来很容易,主要是要对PIC的寄存器有所了解才学得快。我学的时候先用sdcc ...


在看一段程序,请问有flag_uart这个接口么。。我找不到。。

使用特权

评论回复
10
px673084941|  楼主 | 2014-6-13 14:49 | 只看该作者
yewuyi 发表于 2014-6-13 08:40
张明峰:PIC单片机入门与实战

虽然内容老了些,但讲的很实用。

其实很多书都是很有用的。即将大学毕业,现在在实习,实习过程就发现:哦,原来书上是这个意思。也看了一些比学校教程还要老的书,感觉一些老书 写得更加清晰易懂~

使用特权

评论回复
11
perry_peng| | 2014-6-13 16:27 | 只看该作者
px673084941 发表于 2014-6-13 14:44
在看一段程序,请问有flag_uart这个接口么。。我找不到。。

这些都是宏定义,其名称对于程序没什么意义,关键是这个宏代表的值,flag_uart应该是你用的某型PIC的寄存器,假如它是0x05,在PIC16单片机中就是PORTA。

使用特权

评论回复
12
perry_peng| | 2014-6-13 16:35 | 只看该作者
本帖最后由 perry_peng 于 2014-6-13 16:37 编辑

        bsf       alarm_ac;  设高电平。
    bcf       alarm_ac; 低电平。
这样就控制alarm_ac的I/O脚。

用某个reg时要注意bank切换,超出bank要用banksel 宏。

使用特权

评论回复
13
px673084941|  楼主 | 2014-6-16 19:12 | 只看该作者
本帖最后由 px673084941 于 2014-6-16 19:14 编辑
perry_peng 发表于 2014-6-13 16:35
这样就控制alarm_ac的I/O脚。

用某个reg时要注意bank切换,超出bank要用banksel 宏。 ...

banksel这个东西不是很明白。例如程序开头的时候  banksel PORTC,后面又是 btfss PORTD,6,这两句代码怎么联系起来呢。。。。

使用特权

评论回复
14
perry_peng| | 2014-6-17 08:33 | 只看该作者
仔细地看datasheet你就明白了,PORTC,PORTD实际上在同一个bank.

使用特权

评论回复
15
px673084941|  楼主 | 2014-6-17 08:38 | 只看该作者
perry_peng 发表于 2014-6-17 08:33
仔细地看datasheet你就明白了,PORTC,PORTD实际上在同一个bank.

哦。我明白了。我知道他们在同一个BANK,是对BANKSEL的理解太简单了。谢谢。

使用特权

评论回复
16
perry_peng| | 2014-6-17 08:39 | 只看该作者
banksel也只是个宏而不是指令,最终bank切换需要设置STATUS寄存器,利用bsf或bcf指令来设置它的RP1:RP0位。请看datasheet的Data Memory Organization章节。

使用特权

评论回复
17
px673084941|  楼主 | 2014-6-17 08:45 | 只看该作者
perry_peng 发表于 2014-6-17 08:39
banksel也只是个宏而不是指令,最终bank切换需要设置STATUS寄存器,利用bsf或bcf指令来设置它的RP1:RP0位。 ...

嗯!:hug:

使用特权

评论回复
18
perry_peng| | 2014-6-17 08:53 | 只看该作者
本帖最后由 perry_peng 于 2014-6-17 08:58 编辑

banksel PORTC ==> banksel 0x07.
RP0 = PORTC & 0x80 ; RP0等于banksel后面那个寄存器值的第8个bit。
RP1 = PORTC & 0x100 ; RP1等于banksel后面那个寄存器值的第9个bit。

这样不就好理解了吗。

使用特权

评论回复
19
zhoujunfeng| | 2017-2-22 12:15 | 只看该作者
一起学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:PADS PCB设计 QQ:2684334378

23

主题

94

帖子

0

粉丝