Ⅰ 一般8位PIC单片机使用C语言还是汇编语言编程,好像编译器不是支持所有类型的单片机
一般是简单的程序用汇编,复杂的程序用C,
PIC编译器分PICC ,C18,C30
PICC 10F,12F,16F PICC 也有18F
c18 18f
c30 30f 24f 33f
根据个人情况选择。
Ⅱ 单片机C语言如何实现8个LED流水灯来回流动
1、可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。
2、具体实现方法可以参考如下程序:
2、单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
3、单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
Ⅲ 急求懂51单片机编程的C语言大神帮忙编一个AT89S52单片机有创意的8位流水灯程序
#include <迟弯reg51.h>
#define GPIO P1
#define uint8 unsigned char
#define uint16 unsigned int
void delay_ms(uint16 x)
{
uint8 i=110;
while(x--)
while(i--);
}
void main()
{
uint8 i;
while(1)
{ i=8;
GPIO=0x01;
do
{
delay_ms(1000);
GPIO=GPIO<<1;
i--;
}while(i);
}
}
一团旦凯位流水灯左移。前提是你塌唤的等给一的时候才亮。否者把GPIO改为oxfe。
Ⅳ 如何写一个单片机输入上升沿和下降沿的脉冲输出信号的c语言程序
在单片机编程中,检测输入信号的上升沿和下降沿是一项基础但重要的任务。上升沿指的是信号从低电平切换到高电平的瞬间,而下降沿则是信号从高电平切换到低电平的瞬间。这些信息可以用于触发特定的操作,如启动一个定时器、执行一段代码或者启动通信协议等。
下面是一个简单的C语言程序示例,用于检测一个端口的上升沿和下降沿。假设我们使用的是一个常见的8位单片机,如AVR系列。
首先,我们需要定义一个变量来保存当前端口的电平状态。假设端口PIND的第3位(PIND.3)是我们关注的信号。
c
unsigned char previousState = 0;
unsigned char currentState = 0;
接下来,我们需要在主循环中不断查询端口的状态,并与之前的电平状态进行比较。如果电平从低电平变为高电平,就是上升沿;如果从高电平变为低电平,就是下降沿。
c
while(1) {
currentState = PIND & 0x08; // 读取PIND.3的状态
if (currentState != previousState) {
if (currentState == 0x08) {
// 上升沿检测
// 执行上升沿相关的操作
// 例如:启动定时器
// TimerStart();
} else if (currentState == 0x00) {
// 下降沿检测
// 执行下降沿相关的操作
// 例如:停止定时器
// TimerStop();
}
previousState = currentState;
}
}
在上述代码中,`PIND & 0x08`用于读取PIND.3的状态。如果PIND.3为高电平(1),则`currentState`为0x08;如果为低电平(0),则`currentState`为0x00。
通过这种方式,我们可以有效地检测输入信号的上升沿和下降沿,并根据需要执行相应的操作。这对于实现各种定时器控制、数据传输和其他实时任务非常有用。
需要注意的是,这只是一个基本示例。在实际应用中,可能需要考虑更多的因素,如信号的稳定性、噪声干扰等。此外,还需要确保定时查询的频率足够高,以准确检测信号的变化。
Ⅳ 单片机 12864液晶 我的8位数据线连接了P2.0-P2.5,和P1.2和P1.3,程序里怎么编程啊
这样接程序麻烦一些,执行效率也比较低,原来一条指令可以完成的操作现在需好多条指令才能实现
原来这条语句 LCD12864_DA_PORT=DATE 要进行修改
如果P2.6-P2.7没有被占用,送数据时(变量名DATE)可以这样写
P2=DATE;
if(DATE&0x80) P1^3=1;
else P1^3=0;
if(DATE&0x40) P1^2=1;
else P1^2=0;
如果P2.6-P2.7已被占用,送数据时(变量名DATE)可以这样写 :
temp1=0xc0&P2;/暂存P2高2位状态
P2=temp1|(0X3F&DATE);//取数据的低6位 加原来的高2位
if(DATE&0x80) P1^3=1;//取数据的第8位D7
else P1^3=0;
if(DATE&0x40) P1^2=1;//取数据的第7位D6
else P1^2=0;
以上是C语言程序,看起来不算长,但换成汇编语言又多了好几条指令,因此执行比较慢
Ⅵ 单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)
单片机流水灯C语言程序的源代码如下:
#include //51系列单片机定义文件
#define uchar unsigned char //定义无符号字符
#define uint unsigned int //定义无符号整数
void delay(uint); //声明延时函数
void main(void)
{
uint i;
uchar temp;
while(1)
{
temp=0x01;
for(i=0;i<8;i++) //8个流水灯逐个闪动
{
P1=~temp;
delay(100); //调用延时函数
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++) //8个流水灯反向逐个闪动
{
P1=~temp;
delay(100); //调用延时函数
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++) //8个流水灯依次全部点亮
{
P1=temp;
delay(100); //调用延时函数
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++) //8个流水灯依次反向全部点亮
{
P1=temp;
delay(100); //调用延时函数
temp>>=1;
}
void delay(uint t) //定义延时函数
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
(6)8位单片机c语言编程扩展阅读
51单片机流水灯的源代码如下
#include<reg51.h>
#include<intrins.h>
voiddelay(inta)
{
inti;
while(a--)for(i=0;i<110;i++);
}
main()
{
inti;
while(1)
{
P0=0xfe;
for(i=0;i<8;i++)
{
P0=_crol_(P0,1);
delay(500);
}
}
}