怎样 用k150烧写pic程序
比如, VB的ActiveX文档是建立在VB用户文档的基础上的。创建一个ActiveX文档时,用带有扩展名 dob 的文件保存。VB使用这种DOB文件来创建EXE或DLL文件,这种EXE或DLL文件可以为ActiveX文挡提供实际的代码。另外VB生成一个带扩展名 vbd 的说明文件,它对ActiveX文档进行描述,用主应用程序可以打开这个文件。对于ActiveX文档,可以让用户保存数据,这些数据被存在VBD文件里。
代码成分
以前被称作OLE自动服务器。这些对象可以让用户在其他程序里使用其代码。比如,有一个陈列在代码成分里的时钟例程,这样以来此例程可以被其他程序使用。代码成分(ActiveX EXE, ActiveX DLL)能够支持属性与方法。
void delay(char x, chary)
{
char z; //定义z
do{ //先执行一次do
z = y; //把y的值给z
do{;}while(--z); //do空语句,等待--z,,直到z=0结束do while 语句。延时在这产生
}while(--x); //同理x在--,再产生延时
}
延时的问题4MHZ的晶振,机器周期是3μs,指令周期是1-4倍的机器周期,延时的时间好像太短了吧
#include<reg52h>
#define uchar unsigned char
uchar a,flag;
void main()
{
TMOD=0x20; //设置定时器1 为模式2
TH1=0xfd; //装初值设定波特率
TL1=0xfd;
TR1=1; //启动定时器
SM0=0; //串口通信模式设置
SM1=1;
REN=1; //串口允许接收数据
EA=1; //开总中断
ES=1; //开串行中断
while(1)
{
if(flag==1) //如果有数据则进入这个语句
{
ES=0; //进入发送数据时先关闭串行中断
flag=0;
SBUF=a; //将数据原样发回
while(!TI); //等待数据发完
TI=0;
ES=1; //退出进再开串行中断
}
}
}
void serial() interrupt 4 //串行中断函数
{
P1=SBUF; //将数据发送给P1 口显示(测试用)
a=SBUF; //收取数据
flag=1; //标志置位
RI=0;
用几种办法:
1、直接用软件延时用下DELAY()延时子程序要延时5ms,直接调用DELAY(5)好了种纯软件延时
//======延时(n)ms4MHz晶振下
void
DELAY(uint
n)
{
uint
j;
uchar
k;
for
(j=0;j<n;j++)
for
(k=246;k>0;k--)
NOP();
}
2、用定时器延时要通过计算延时时间来确定延时常数(分频比和定时器初值)
在你的C文件里引用EEPROM函数的头文件,eeprom_routinesh
然后在程序中使用
void eeprom_write(unsigned char addr, unsigned char value);
unsigned char eeprom_read(unsigned char addr);
这两个函数了。
这两个函数一个读一个写。比如你想写0x10到地址为0x55的EEPROM,
就写:eeprom_write(0x55,0x10);
同理,如果想读取0x55地址处的值,
就写:ee_value = eeprom_read(0x55);
如果编译时编译器提示找不到eeprom_routinesh,可以在
X:\Program Files\HI-TECH Software\PICC\981\include 目录下找,然后复制到自己项目文件夹下。
对了,我用的是MPLab IDE,编译器使用的是PICC。
microchip 的PIC 单片机,使用 MPLAB 编译器进行程序编译。
比较cao蛋的是,MPLAB 具有多种编译器,版本相互不兼容。
其中市场主打 的PIC16F 系列,多数采用 MPLAB IDE 编译器(本人用V88版本(破解的,嘘),新的应该是V89版本,不过本人没多关注,也不知道正不正确)。
MPLAB 编译器,在编程的时候,必须选择单片机型号,而本人使用的IDE V88版,并不能支持所有的PIC16系列单片机型号(最起码,最近使用的PIC16F1513就没有支持,在MPLAB X IDE里有支持)
而microchip 的高级单片机 PIC18系列,则以 MPLAB X IDE 编译器为主(行业称“十”版本),不过用了IDE V88后,再下载使用 IDE 10(就是上面的十版本)。你会觉得画风突变,完全找不着北,连配置字、用户程序版本号都没法兼容使用。前面熟悉的IDE,完全没法发挥任何作用。你又得重新开始学习一个新的编程软件(害得哥在新项目上浪费了N多时间)。
最可恨的是,IDE 10 把市场上销售的PICKIT 3 的离线脱机下载功能给搞死了(一插上KIT 3,IDE 10就自动升级KIT 3 的内部固件程序)。然后哥只能给它贴上“研发专用”标签!
PIC 的单片机很多地方要注意的,不用的特殊功能(特别是AD)不是你不开就好的,而是你必须关闭才行。
PIC 单片机有自己的一套 汇编,如果你用汇编,你必须重新学习它的汇编语言。如果你使用C,那还好,多数是兼容的(除了 程序续行(就是单行程序太长,进行多行显示))。不过哥没整好它的混编(不知道是哥能力不够,还是破解安装少东西,都是编译错误),没法发挥它的高效。PIC 单片机的 除法运算1000个周期、左右移16位无法编译、硬堆栈层限制(就是函数内 调用函数 调用函数 调用函数……,最明显的就是递归调用被限死)…………一堆弱点!
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。
以上就是关于怎样 用k150烧写pic程序全部的内容,包括:怎样 用k150烧写pic程序、PIC单片机的延时程序、跪求一个PIC单片机程序串口调试程序,要用PIC16F1823T-I/ST芯片的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)