本文主要是介绍pic汇编程序转c语言,PIC单片机如何从汇编转向PICC,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、如何从汇编转向PICC
首先要求你要有C语言的基础。C代码的头文件一定要有#include,它是很多头文件的集合,C编译器在pic.h 中根据你的芯片自动载入相应的其它头文件。这点比汇编好用。载入的头文件中其实是声明芯片的寄存器和一些函数。
static volaTIle unsigned char TMR0 @ 0x01;
staTIc volaTIle unsigned char PCL @ 0x02;
staTIc volatile unsigned char STATUS @ 0x03;
可以看出和汇编的头文件中定义寄存器是差不多的。如下:
TMR0 EQU 0X01;
PCL EQU 0X02;
STATUS EQU 0X03;
都是把无聊的地址定义为大家公认的名字。
1、如何赋值?
如对TMR0 附值,汇编中:
MOVLW 200;
MOVWF TMR0;
当然得保证当前页面在0,不然会出错。
C语言:
TMR0=200;//无论在任何页面都不会出错。
可以看出来C是很直接了当的。并且最大好处是操作一个寄存器时候,不用考虑页面的问题。一切由
C自动完成。
2、如何位操作?
汇编中的位操作是很容易的。在C中更简单。C的头文件中已经对所有可能需要位操作的寄存器的每
一位都有定义名称:
如:PORTA 的每一个I/O口定义为:RA0、RA1、RA2。。。RA7。OPTION 的每一位定义为:PS0、
PS1、PS2 、PSA 、T0SE、T0CS、INTEDG 、RBPU。可以对其直接进行运算和附值。
如:
RA0=0;
RA2=1;
在汇编中是:
BCF PORTA,0;
BSF PORTA,2;
可以看出2 者是大同小异的,只是C 中不需要考虑页面的问题。
3、内存分配问题
在汇编中定义一个内存是一件很小心的问题,要考虑太多的问题,稍微不注意就会出错。比如16 位的
运算等。用C 就不需要考虑太多。下面给个例子:
16 位的除法(C 代码):
INT X=5000;
INT Y=1000;
INT Z=X/Y;
而在汇编中则需要花太多精力。
给一个小的C 代码,用RA0 控制一个LED 闪烁:
这篇关于pic汇编程序转c语言,PIC单片机如何从汇编转向PICC的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!