#include<pich>
void delay(int x)
{
int a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void main()
{
ANSEL=0;
CMCON0=0X07;
int a,b,c,d;
GPIO=0;
TRISIO0=1;
TRISIO1=1;
TRISIO2=0;
TRISIO3=0;
TRISIO4=0;
TRISIO5=1;
if(GPIO5==0)
{
//此处还没有加去抖动
while(1)
{
if((GPIO0==0)&&(GPIO1==0))
{
delay(5);
if((GPIO0==0)&&(GPIO1==0))
{
GPIO2=0;//点亮LED1
GPIO3=1;//点亮LED1
GPIO4=1;//点亮LED1
}
}
if((GPIO0==1)&&(GPIO1==0))
{
delay(5);
if((GPIO0==1)&&(GPIO1==0))
{
GPIO2=1;//点亮LED1
GPIO3=0;//点亮LED1
GPIO4=1;//点亮LED1
}
}
if((GPIO0==1)&&(GPIO1==1))
{
delay(5);
if((GPIO0==1)&&(GPIO1==1))
{ GPIO2=1;//点亮LED1
GPIO3=1;//点亮LED1
GPIO4=0;//点亮LED1
}
}
if((GPIO0==0)&&(GPIO1==1))
{
delay(5);
if((GPIO0==0)&&(GPIO1==1))
{
while(1)
{
for(a=1000;a>0;a--)
{
GPIO2=0;//点亮LED1
GPIO3=1;//点亮LED1
GPIO4=1;//点亮LED1
}
for(a=1000;a>0;a--)
{
GPIO2=1;//点亮LED1
GPIO3=1;//点亮LED1
GPIO4=1;//点亮LED1
}
}
}
}
}
}
if(GPIO5==1)
{
while(1)
{
for(d=3;d>0;d--)
{
for(c=5000;c>0;c--)
{
GPIO2=0;//点亮LED1
GPIO3=1;//点亮LED1
GPIO4=1;//点亮LED1
}
for(c=5000;c>0;c--)
{
GPIO2=1;//点亮LED1
GPIO3=1;//点亮LED1
GPIO4=1;//点亮LED1
}
}
delay(500);
for(d=3;d>0;d--)
{
for(c=20000;c>0;c--)
{
GPIO2=0;//点亮LED1
GPIO3=1;//点亮LED1
GPIO4=1;//点亮LED1
}
for(c=20000;c>0;c--)
{
GPIO2=1;//点亮LED1
GPIO3=1;//点亮LED1
GPIO4=1;//点亮LED1
}
}
delay(500);
}
}
}
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。
我看你程序中只用到了Array0,将其余的不用Array1、2、3注释掉,编译可以通过。
可能是由于RAM空间太小了,你定义变量占用空间太多了
建议:仔细看看datasheet关于空间管理部分
以上就是关于帮我写个程序,用PIC12F683芯片全部的内容,包括:帮我写个程序,用PIC12F683芯片、最近刚学PIC单片机,有个程序看不懂,请高手帮下,越详细越好:、PIC单片机C编程问题,我刚从转来学这一块,以下是写的第一个程序,高手帮忙看看!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)