BCD转化部分:
TEMPE<9 不用转化;
如果TEMPE>9,16进制通过加6转10进制,但要进位的,进位通过对下一个寄存器加1保存到下一个寄存器。如0FH 加6=15,5保存到当前寄存器,下一个寄存器加1。
BCD1:
MOVLW 06H
ADDWF TEMPE,1 ;加6
MOVLW 0FH
ANDWF TEMPE,1 ;高四位清零
INCF FSR,1 ;选下一寄存器,即高位寄存器
INCF INDF,1 ;高位寄存器加1,即进位
DECF FSR,1 ;恢复当前寄存器
RETURN
编译器:开发程序后,用编译器将之编译成可执行的二进制文件。是软件。
PIC单片机的C编译器只有HI-TECH公司出品PICC编译器,和CCS公司的CCS编译器。还有PIC的生产商Microchip公司自行生产的只针对PIC18/PIC24/dsPIC/PIC32系列单片机的C语言编译器MCC(MCC18 / MCC30 / MCC32)。如果是编译PIC10、PIC12、PIC16系列单片机,用CCS最好。而PIC18/PIC24/dsPIC/PIC32系列,用MCC最好。
编程器:又称之为烧录器,是把你生成的可执行文件download到单片机上的NAND或者NOR中的工具,是硬件。
1 static volatile unsigned TMR1 @ 0x0E;
0x0E 是寄存器地址。 表示这个TMR1是寄存器0x0E的值。 具体这个寄存器是做什么用的,需要看你芯片的datasheet,比如 16F874A 16F877A 这个都是计数寄存器的地址。
2 PopQueue应该是一个d出队列的函数。
将队列首d出到msg中,返回值为PopSuccess表示取数据成功,取到的数据会存在msg中。
一般用于中断传数据给主线程。这个在主线程中接收。
3 __CONFIG(x) 一般是配置寄存器的。
#include<reg51h>
unsigned char a,flag;
unsigned int i;
void init_serial();
void init_serial() //初始化串口
{
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void serial() interrupt 4
{
RI=0;
a=SBUF;
flag=1;
}
void main()
{
init_serial();
i=100;
flag=0;
while(1)
{
if(flag==1) //接受串口信息
{
ES=0;
P0=0x00;
while(i--);
P0=0xff;
SBUF=a;
flag=0;
while(!TI);
TI=0;
i=100;
ES=1;
}
}
}
这个是我自己写的,单片机与计算机串口通信。计算机向单片机发送一个数据 然后单片机接受到后又把那个数据返回计算机。 欢迎提问……
很简单的。
在main主程序里面
LOOP GOTO LOOP
这条程序,会不停的执行,到了TMR0溢出的时候就会执行中断程序
ORG 0004H为中断程序的地址
这些的是什么啊 看的乱乱的
、中断时候跟while(1) 怎么看怎么别扭了
void main()
{
init(); 只执行一次????
TXREG=0x31;只执行一次????
while(!TRMT); 中断》》》》
while(1); 死循环 ???可它循环的是什么呢?? 要是这样 我觉得这个去掉也没问题 ---
后面为什么要加个while(1);? 这样 这个程序不就是个死循环了吗>
到while(1);那程序就死循环了
吧while(1);加在主函数的 一开始
while(1)
{
init();
TXREG=0x31;
while(!TRMT);
}
里面在也东西
这样实验一下 我也是刚入门 除了这个问题还是感觉有点什么问题呢 你先这么实验一下
还有 你用软件仿真实验一下 单步执行 看看停在在个程序那出问题了 就好找了
有条件就硬件仿真一下
记得采纳啊
函数_write_com和_delay_ms在中断和主程序中都有调用,会导致混合调用。
英文写的很明白了,会上网就不会查英文单词吗还是不知道什么是混合调用。
比如你主程序调用_delay_ms做100ms延时,正在做循环延时,结果一个中断进来,中断处理程序也调用了_delay_ms,结果就是_delay_ms原有的数据冲掉,从头再来,这次执行是对的。等中断处理完,再执行走到一半的_delay_ms程序,因为数据被冲掉了,天知道是什么结果。
用的是PIC的C语言吧?不好好看书,PIC的C语言最不灵光的(之一)就是程序的混合调用。资源不够啊!
其它单片机看编译器,有的也会报错,有的会很聪明(比如KEIL)的知道要保护原始数据,在中断里帮你保护了。
以上就是关于一段PIC单片机的程序全部的内容,包括:一段PIC单片机的程序、PIC编译器和编程器有什么区别编程序用哪一个、有几行PIC单片机的c语言程序代码看不懂,请教一下。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)