PIC单片机测试例程汇总Word文件下载.docx
- 文档编号:19590519
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:12
- 大小:140.74KB
PIC单片机测试例程汇总Word文件下载.docx
《PIC单片机测试例程汇总Word文件下载.docx》由会员分享,可在线阅读,更多相关《PIC单片机测试例程汇总Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
//AN功能口电平不能改变
delay();
RA5=0;
}
}
voiddelay()
uinta;
//定义局部变量
for(a=10;
a>
0;
a--){}
//PORTA和PORTE口作为IO用的定义
//While
(1)在这里作为一个大循环用,如果后面加“;
”号,则程序将停在While
(1)不往下执行。
-----------------------------------------------------------------------------------------------------------------
voiddelay(uintx);
//声明子函数
TRISD2=0;
RD2=1;
delay(5);
//可以改变程序延时时间,当前5.04mS
RD2=0;
voiddelay(uintx)//4M晶振
uinta,b;
for(a=x;
a--)//完整嵌套如下
for(b=110;
b>
b--)
};
//分号加亦可,不加亦可
//在延时程序的前后两个地方设置断点(Breakpoints),再打开Stopwatch,然后全速运行两次
-----------------------------------------------------------
delay();
//延时1.05mS
voiddelay()//4M晶振
a--)//for嵌套
for(b=10;
b--);
uinti;
for(i=0;
i<
20000;
i++);
我们怎么来算呢,先将20000转成16进制,得到4E20,然后将高字节4E乘以6得到十进制468,再将468+2=470,然后将十进制470*十六进制20(即十进制32)=15040;
所心这个延时函数总共要执行15040个周期,假设所用的晶振为12MHZ,则该段函数总延时:
15.04ms。
有了这个公式我们如果想要设定指定的延时长度就可以用它的己知公式确定。
即:
总时间=[(6*i值的高8位)+2]*i的低8位。
例如:
设要延时125ms。
我们将低字节先赋值十进制200*(即:
C8),然后再算高低节的定值,由式中可知125ms=200*((i值的高字节*6)+2),又可推算出(高低节*6)+2的总延迟时间应等于625us,将625/6=104.1666,取整数得到104,将104转成16进制得到68H,再将高字节和低字节组合起来即得到了定值,即:
十六进制68C8,代入函数即如下:
0x68C8;
如果写十进制就要将68C8转成10进制,即:
26824,代入后得到:
26824;
第一步:
选择单片机晶振
第二步:
全编译
第三步:
按d进入软件调试
第四步:
进入程序设置两个断点:
第五步:
按全速运行至第一个断点:
注意时间是0.000389s
第六步:
再按一次全速运行至第二个断点:
注意时间是1.013412s
/////////////////////////////////////////////////
voidBuzz(ucharnum);
//蜂鸣器发声子函数
voidscan();
//按键扫描子函数
TRISB=0xff;
TRISE0=0;
RE0=0;
scan();
//扫描按键蜂鸣器发声
voidscan()
if(RB0==0)
delay(10);
while(!
RB0)
Buzz
(2);
//发两声
voidBuzz(ucharnum)
ucharBuzz_num;
for(Buzz_num=num;
Buzz_num>
Buzz_num--)
RE0=1;
delay(50);
delay(20);
2、I2C端口模拟
uchara;
#definesdaRC1
#definesclRC2
////////////////////////////////////////////////子函数声明
voidstart();
//开始信号
voidstop();
//停止
voidrespons();
//应答
voidinit();
voidwrite_byte(uchardate);
//写一个字节
ucharread_byte();
//读一个字节
voidwrite_add(ucharaddress,uchardate);
//写任意字节
ucharread_add(ucharaddress);
//读任意字节
voiddelay1(ucharx);
////////////////////////////////////////////////主函数
init();
write_add(23,0xaa);
delay1(100);
PORTB=read_add(23);
while
(1);
////////////////////////////////////////////////
voidstart()
TRISC=0x00;
TRISB=0x00;
sda=1;
scl=1;
sda=0;
voidstop()
sda=0;
scl=1;
sda=1;
voidrespons()
uchari;
while((sda==1)&
&
(i<
250))i++;
//防止死循环
scl=0;
voidinit()
voidwrite_byte(uchardate)
ucharbit_count;
for(bit_count=0;
bit_count<
8;
bit_count++)
{
if((date<
<
bit_count)&
0x80){sda=1;
scl=0;
ucharread_byte()
uchari,k;
i++)
k=(k<
1)|sda;
returnk;
//带返回值
voidwrite_add(ucharaddress,uchardate)
start();
write_byte(0xa0);
//器件地址写操作
respons();
write_byte(address);
//要写数据的地址
write_byte(date);
//要写的数据
stop();
ucharread_add(ucharaddress)
uchardate;
write_byte(0xa1);
//器件地址读操作
date=read_byte();
//读一个字节放入date
returndate;
{;
;
voiddelay1(ucharx)
uchara,b;
a--)
for(b=100;
#defineucharunsignedchar
unsignedint
#defineDQRC1
//定义一个端口
#defineDQ_HIGH()TRISC1=1
#defineDQ_LOW()TRISC1=0;
DQ=0
constuchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f};
constuchartable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
0x87,0xff,0xef};
uinttemper;
uchara1,a2,a3,a4;
voiddelayus(uint,uchar);
voiddisp(ucharnum1,ucharnum2,ucharnum3,ucharnum4);
voidget_tem();
while
(1)
//
ucharnum;
get_tem();
for(num=20;
num>
num--)
disp(a1,a2,a3,a4);
}
voidreset()
ucharst=1;
DQ_HIGH();
NOP();
while(st)
DQ_LOW();
delayus(70,30);
delayus(4,4);
if(DQ==1)
st=1;
else
st=0;
delayus(50,10);
uchari,temp;
for(i=8;
i>
i--)
temp=date&
0x01;
//01010101
delayus(0,0);
if(temp==1)
delayus(2,2);
date=date>
>
1;
//00101010
uchari,date;
staticbitj;
//定义一位
j=DQ;
if(j==1)
date=date|0x80;
//10000000
delayus(1,1);
return(date);
voidget_tem()
uchartem1,tem2,num;
floataaa;
reset();
//复位
write_byte(0xCC);
//跳过ROM
write_byte(0x44);
//温度转换
for(num=100;
write_byte(0xBE);
tem1=read_byte();
tem2=read_byte();
aaa=(tem2*256+tem1)*6.25;
//此处的结果为浮点数
temper=(int)aaa;
//强制转换成整型送入temper
a1=temper/1000;
a2=temper00/100;
a3=temper0/10;
a4=temper;
voiddelayus(uintx,uchary)
ucharj;
for(i=x;
i--);
for(j=y;
j>
j--);
voiddelay(uintx)
for(b=110;
TRISD=0;
TRISA=0;
PORTD=0;
PORTA=0;
voiddisp(ucharnum1,ucharnum2,ucharnum3,ucharnum4)
PORTD=table[num1];
//显示第一个数码管
PORTA=0x20;
//00100000
delay
(2);
PORTD=table1[num2];
//显示第二个数码管
PORTA=0x10;
//00010000
PORTD=table[num3];
//显示第三个数码管
PORTA=0x08;
//00001000
PORTD=table[num4];
//显示第四个数码管
PORTA=0x04;
//00000100
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PIC 单片机 测试 例程 汇总
![提示](https://static.bdocx.com/images/bang_tan.gif)