惊喜的发现下面这个 ,那么以次当然也可以把DS18B20接在IO口上读写了。
运行跑马灯程序,我们还是使用这个框架,只需要修改
demo.C
文件的内容即可。代码如下:
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#define rPCONE (*(volatile unsigned *)0x1d20028)
#define rPDATE (*(volatile unsigned *)0x1d2002c)
#define rPUPE (*(volatile unsigned *)0x1d20030)
#define rWTCON (*(volatile unsigned *)0x1d30000)
#define rWTDAT (*(volatile unsigned *)0x1d30004)
#define rWTCNT (*(volatile unsigned *)0x1d30008)
#define rPDATE (*(volatile unsigned *)0x1d2002c)
#define rPUPE (*(volatile unsigned *)0x1d20030)
#define rWTCON (*(volatile unsigned *)0x1d30000)
#define rWTDAT (*(volatile unsigned *)0x1d30004)
#define rWTCNT (*(volatile unsigned *)0x1d30008)
#define MCLK 64000000
static int delayLoopCount=400;
static int delayLoopCount=400;
rWTCON=((MCLK/1000000-1)<<8)|(2<<3);
rWTDAT=0xffff;
rWTCNT=0xffff;
rWTCON=((MCLK/1000000-1)<<8)|(2<<3)|(1<<5);
}
for(;time>0;time--)
for(i=0;i<delayLoopCount;i++);
if(adjust==1)
{
rWTCON=((MCLK/1000000-1)<<8)|(2<<3);
i=0xffff-rWTCNT;
delayLoopCount=8000000/(i*64);
}
}
rWTDAT=0xffff;
rWTCNT=0xffff;
rWTCON=((MCLK/1000000-1)<<8)|(2<<3)|(1<<5);
}
for(;time>0;time--)
for(i=0;i<delayLoopCount;i++);
if(adjust==1)
{
rWTCON=((MCLK/1000000-1)<<8)|(2<<3);
i=0xffff-rWTCNT;
delayLoopCount=8000000/(i*64);
}
}
int main(void)
{
int i, j;
//printf("Hello World! This is ARMSYS!/n");
printf("LED round robin showing for ARMSYS!/n");
rPDATE = 0x1ff;
rPCONE = 0x15569;
rPUPE = 0x6;
{
int i, j;
//printf("Hello World! This is ARMSYS!/n");
printf("LED round robin showing for ARMSYS!/n");
rPDATE = 0x1ff;
rPCONE = 0x15569;
rPUPE = 0x6;
while(1)
{
for(i=0;i<4;i++)
{
Led_Display(0x01<<i);
wtDelay(5000);
}
}
return 0;
}
{
for(i=0;i<4;i++)
{
Led_Display(0x01<<i);
wtDelay(5000);
}
}
return 0;
}
代码修改后,重新编译。下载到开发板,运行
demo
,可以看到
4
盏
LED
被跑马灯式点亮的景象。
对该文档内容有任何疑问,请通过发邮件到 support@hzlitai.com.cn 来同我们交流。