在BBS上看到很多兄弟在使用HT-PICC时遇到困难。或者是对PIC-C语言不太熟。就我自己个人来说,我也不太熟。但我很希望就我自己所知道的能够和大家一起学习和分享。
首先我简单说明一下PICC的执行程序。(HT-PICC-BIN)
CPP:先行处理前置处理器的虛指令及移除程序的注释说明。
P1:转换程序为助记符,和检查程序语法。
CGPIC:将原程序转换为汇编语言。
ASPIC:将汇编语言转换为可以重新定位的机器码。
HLINK:安排变量在RAM的实际地址。连接其他的头文件。
OBJTOHEX:产生大家需要的HEX文件。
CROMWELL:产生一些编译信息。
这是PICC所需要的执行程序,可以在BIN里找到。
编译流程按我上所说的从上到下。
在写程序时首先应该写的是#INCLUDE 〈pic.h〉
pic.h那位感兴趣的话可以在C:\HT-PIC\include\pic.h
在C语言中可以使用@定义SFR的绝对地址。如:
static volatile unsigned char POPTA @ 0x05;
有一个关键词是volatile 用来告诉编译器POPTA 是一个易变变量。变量数据并不一定需要经过程序才会改变。我个人认为所有的端口和中断所 用到的变量应该定义为volatile.
在C语言中也可以对端口直接进行位寻址。如:
static volatile bit reeds @ (unsigned)&POPTA*8+1;
定义后就可以在程序中直接使用reeds位变量。
与volatile变量相对的是const,它会告诉编译器此变量不能被改变。
还有一些其他变量都是C语言中的,就不在这说了。
Persistent:告诉编译器此变量在程序重启时变量内容不会改变。如
Persistent unsigned char timer;
在PICC中还可以用BANK 1 OR BANK 2,来 把指定的变量放在指定的BANK ZHONG
bank2 unsigned char timer