Ⅰ 单片机 用c语言编写

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint time=0;

uchar display_data[8]={0,0,0,0,0,0,0,0};
uchar display_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

void delay(void)
{
uchar i;
for(i=250;i>0;i--);
}
void calc()
{
time++;
if(time==10000)
time=0;
}

void convert()
{
display_data[0]=time/1000;
display_data[1]=time%1000/100;
display_data[2]=time%1000%100/10;
display_data[3]=time%1000%100%10;
}

void display()
{
P2=0xFE;
P0=display_code[display_data[3]];
delay();
P2=0xFF;

P2=0xFD;
P0=display_code[display_data[2]];
delay();
P2=0xFF;

P2=0xFB;
P0=display_code[display_data[1]];
delay();
P2=0xFF;

P2=0xF7;
P0=display_code[display_data[0]];
delay();
P2=0xFF;
}

void main(void)
{
uint i;
while(1)
{
for(i=0;i<500;i++)
{
display();
}
calc();
convert();
}
}

Ⅱ 求一个用C语言编写的单片机程序代码

if(s==0)
{
delayms(20);
if(s==0) {flag=!flag;while(s==0);}
}
if(flag==0)
{ 左移 }
if(flag==1) {右移}
当然,为了程序能及时响应,左移和右移过程中还要加入回按键检测,并用答break退出

Ⅲ C语言编写单片机程序

只能跟你说思路:
需要些三部分子程序;一个是按键扫描,一个是显示,一个是灯控制。
主程序就一直按键扫描,判断到时哪个按键就调用分别得子程序。
学习单片机程序还是靠自己写,多写写就懂了。呵呵。

Ⅳ C语言怎么写进单片机

1、把C语言编译为编程器支持的语言格式,比如常用的bin,或hex等格式。
2、如果是可在线编程的,可以用ISP直接进行烧录。
3、如果不是可在线编程的,将单片机芯片,放入编程器,然后烧录。
注意:编译和烧录时,都要选择和单片机芯片一致的型号,否则会出错。
如果找不到对应的型号,说明不支持该型号的单片机。

Ⅳ C语言与单片机C语言的区别 急求

C语言与单片机C语言的区别:

1、编译器的区别

C语言的编译器有GCC(GNU组织开发的开源免费的编译器)、MinGW(Windows操作系统下的GCC)、Clang(开源的BSD协议的基于LLVM的编译器)、Visual C++:: cl.exe(Microsoft VC++自带的编译器)。

单片机C语言采用C51编译器(简称C51)。由C51产生的目标代码短,运行速度高,存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言PL/M51语言目标代码混合使用。

2、内容的区别

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

单片机C语言基于C语言的单片机编程语言,是以C语言为基础加以调整的。

3、语言特性的区别

C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

单片机C语言基于单片机进行的程序开发,在有周围外设支持的情况下,用软件来控制的部分通过单片机编程来实现。单片机能识别的语言是硬件语言即汇编,因此编程就是围绕汇编来实现。

4、语言优点的区别

C语言简洁紧凑、灵活方便、运算符丰富、数据类型丰富、表达方式灵活实用、允许直接访问物理地址,对硬件进行操作、生成目标代码质量高,程序执行效率高、可移植性好、表达力强。

单片机C语言目标代码短,运行速度高,所需存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言或PL/M51语言目标代码混合使用。

Ⅵ 用C语言编写单片机程序

#include <REG52.H>
sbit csb_SAT= P1^0; //定义超声波发生脚
void delay(void) //延时25微秒,12T芯片用12M误差 0us
{
unsigned char a;
for(a=11;a>0;a--);
}
void csb_fs(int dat) {while(dat--){csb_SAT=1;delay();csb_SAT=0;delay();}} //发射
void main()
{
EA=1;
while(1)
{
csb_fs(10);
delay();delay();delay();delay();delay();delay();delay();delay();delay();
IE=0x83; //INT0允许中断
while(IE);
P1_1=1;delay();P1_1=0;delay();P1_1=1;delay();P1_1=0;delay();P1_1=1;delay();P1_1=0;delay();
}
}
void int0_chuankou(void) interrupt 0 using 1 //外部INT0中断子程序
{
IE=0;//禁止INT0中断
}

Ⅶ C语言编程单片机

/*******************************************************************************
*
* 普中科技
--------------------------------------------------------------------------------
* 实 验 名 : 按键选择LED灯左右移动实验
* 实验说明 : 按键选择LED灯左右移动
* 连接方式 : 见接线图
* 注 意 :
*******************************************************************************/
//--包含你要使用的头文件--//
#include <reg51.h> //此文件中定义了51的一些特殊功能寄存器
#include <intrins.h>
//--定义要使用的IO口--//
sbit K1 = P1^0; //对应按钮K1
sbit K2 = P1^1; //对应按钮K2
sbit L1=P2^4;
sbit L2=P2^5;
sbit L3=P2^6;
sbit L4=P2^7;
//--定义全局函数--//
void Delay10ms(unsigned int c); //延时10ms
unsigned char Key_Scan1();
unsigned char Key_Scan2();
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{
unsigned char keyNum1,keyNum2;

while (1)
{
keyNum1= Key_Scan1(); //扫描键盘
keyNum2= Key_Scan2();
if (keyNum1 == 0,keyNum2==0) //如果键值返回1
{
L1=1;
}

if (keyNum1 == 0,keyNum2==1) //如果键值返回1
{
L2=1;
}
if (keyNum1 == 1,keyNum2==0) //如果键值返回1
{
L3=1;
}
if (keyNum1 == 1,keyNum2==1) //如果键值返回1
{
L4=1;
}
}
}
/*******************************************************************************
* 函 数 名 : Key_Scan()
* 函数功能 : 扫描键盘
* 输 入 : 无
* 输 出 : 读取到的键值
*******************************************************************************/
unsigned char Key_Scan1()
{
unsigned char key1= 0, i; //保存键值
//--检测按键1--//
if (K1==0) //检测按键K1是否按下
{
Delay10ms(1); //消除抖动
if (K1==0) //再次检测按键是否按下
{
key1 = 1;
i = 0;
while ((i<50) && (K1==0)) //检测按键是否松开
{
Delay10ms(1);
i++;
}
}
}
return key1;
}
unsigned char Key_Scan2()
{ //--检测按键2--//
unsigned char key2= 0,O;
if (K2==0) //检测按键K1是否按下
{
Delay10ms(1); //消除抖动
if (K2==0) //再次检测按键是否按下
{
key2 =1;
O = 0;
while ((0<50) && (K2==0)) //检测按键是否松开
{
Delay10ms(1);
O++;
}
}
}
return key2; //将读取到键值的值返回
}
/*******************************************************************************
* 函 数 名 : Delay10ms
* 函数功能 : 延时函数,延时10ms
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Delay10ms(unsigned int c) //误差 0us
{
unsigned char a, b;
//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}

}
}
你看下行不行 我没板子没实验

Ⅷ 用c语言写51单片机

^

#include<reg51.h>
#defineucharunsignedchar
sbitkey1=P1^0;
sbitkey2=P1^1;
sbitkey3=P1^2;
sbitkey4=P1^3;
sbitled1=P1^4;
sbitled2=P1^5;
main()
{
if(key1==0)
{
while(key1==0);
led1=0;
led2=1;
}
if(key2==0)
{
while(key2==0);
led1=1;
led2=0;
}
if(key3==0)
{
while(key3==0);
led1=0;
led2=0;
}
if(key4==0)
{
while(key4==0);
led1=1;
led2=1;
}
}