51单片机c语言怎么写

1.求大神在keil上帮写51单片机C语言程序

//第一个实验:

//假设8个LED阴极指向单片机,D11连接P0.1,D12连接P0.2 。 D18连接P0.7

//假设K1按键在P2.3引脚

#include<reg51.h>

#include<intrins.h>

sbit k1=P2^3;//假设K1按键在P2.3引脚

void main()

{

P0=0xfe;

while(1)

{

if(k1==0)

{

while(k1==0);

P0=_crol_(P0,1);

}

}

}

//第二个实验:

//假设8个LED阴极指向单片机,D11连接P0.1,D12连接P0.2 。 D18连接P0.7

#include<reg51.h>

char led[]={0xfe,0xff,0xfd,0xff,0xfb,0xff,0xf7,0xff,0xef,0xff,0xdf,0xff,0xbf,0xff,0x7f,0xff};

void main()

{

char i=0;

char counter=0;

TMOD=0x01;//T0 工作方式1

TH0=(655356-50000)/256;//延时50ms

TL0=(655356-50000)%256;//延时50ms

TR0=1;//启动T0

while(1)

{

if(TF0==1)//查询

{

TH0=(655356-50000)/256;//重新延时50ms

TL0=(655356-50000)%256;//重新延时50ms

counter++;

if(counter==10)//延时0.5秒

{

counter=0;//重新开始新一轮0.5秒延时

i++;

if(i==16)

{

i=0;

}

P0=led[i];//点灯

}

}

}

}

2.51单片机用C语言编写

#include<reg51.h>

sbit a = P1^2; //定义单片机对蜂鸣器的输出端口

sbit key = P3^2; //定义单片机对按键的端口 S19

void delay_short() //短延时函数 大约100us 用于设置蜂鸣器的频率

{

unsigned int i;

for(i=0;i<100;i++);

}

void delay_long() //长延时函数 大约20ms 用于按键的软件消抖和2次声响之间的间隔

{

unsigned int j;

for(j=0;j<20000;j++);

}

void work(unsigned time) //蜂鸣器使能函数,参数为需要发声的时间 参数越大响的时间越长 不能超过65535

{

unsigned int m = time;

unsigned int n = 0;

while(m)

{

a = ~a;

delay_short();

m--;

}

for(n=0;n<30;n++) //大约延时 1S左右

{

delay_long();

}

}

void main()

{

while(1)

{

if(key == 0) //软件消抖

{

delay_long();

if(key == 0)

{

work(2000);

work(2000);

work(2000);

work(500);

work(500);

work(500);

work(500);

work(500);

}

}

}

}

上面是实现要求的所有源程序,另外纠延时控制的是发声的频率,并不是发声的时间长短,发声的时间长短可以通过循环来实现,具体见源程序。另外单片机的I/O口的负载能力是不足以驱动蜂鸣器的,需要借助放大芯片,我用的是ULN20003 下面附上我的硬件连接图

图片不是很清楚 估计是SOSO的问题 然后就是把IN和单片机的P1^2口连起来就可以

有上面问题可以联系我 363396124 加的时候请说明来意

3.51单片机的优先级怎么用C语言怎么写

正常情况下,优先顺序为:

外部中断0

定时器0

外部中断1

定时器1

串口

定时器2

IP中的位控制中断优先级,分别为:

PX0:外部中断0

PT0:定时器0

PX1:外部中断1

PT1:定时器1

PS:串口

PT2:定时器2

当其为1时,该位对应的中断将设为高优先级。

中断响应是:同级中断比如IP各位都为0 或都为1时,同时到达时优先按如上顺序响应中断,当一个中断在执行时,其他中断只能排队等候。

当其中一位为1比如PS=1时,那么无论为0的任何中断在执行中都将被打断,优先响应高级中断。

因此,要保证需要的中断享有至高权限,将相应的控制位设为1就可以了,比如串口优先保证那么初始化时加入:

PS=1;就OK。

4.求写一个单片机(AT89C51)C语言程序

用C啊,我想想:

1、和硬件有点儿关系,这个你清楚么?

2、假设LED连接到P1口吧。第一个灯接到P1.0。阴极接IO,阳极接5V。

#include <reg51.h>

bit SecFlag;

unsigned char mS;

void Display(unsigned char num,unsigned char sec)

{

num%=8;

P1=~(1<<num);

while(sec--!=0)

{

TR0=1;

while(SecFlag==0);SecFlag=0;

TR0=0;

}

}

main()

{

unsigned char i;

TMOD=1;IE=0x82;

while(1)

{

Display( (i++)%8,1);

}

}

void ISRT0(void) interrupt 1

{

TH0=(-50000)>>8;TL0=-50000;

mS++;

if(mS>20){mS=0;SecFlag=1;}//12MHz, 50mS定时中断,1秒计时。

}

你很容易扩展出任意要求的闪烁流水灯啦。

Display(2,1);

Display(1,1);

Display(3,2);

Display(1,2);

……放到while里面就好了。祝你玩得开心。

5.单片机c语言

//下面三行分别将uchar、uint、ulong定义为 unsigned char、unsigned int和unsigned long 方便使用

#define uchar unsigned char //定义一下方便使用

#define uint unsigned int

#define ulong unsigned long

#include //包括一个52标准内核的头文件

sbit P10 = P1^0; //将P10定义单片机的P1.0口,控制的LED灯,

sbit K1= P3^2; //将K1定义为按键K1

uchar scale;//用于保存占空比的输出0的时间份额,总共10份

char code dx516[3] _at_ 0x003b;//这是为了仿真设置的

//模拟PWM输出控制灯的10个亮度级别

void main(void) // 主程序

{

uint n;

//下面几行是定时器的初始化,初始化的数据OxF3和0x98,数据是通过计算得到的,公式我忘了

RCAP2H =0xF3; //赋T2的预置值的高位,溢出1次是1/1200秒钟

RCAP2L =0x98;//赋T2的预置值的低位

TR2=1; //启动定时器

ET2=1; //打开定时器2中断

EA=1; //打开总中断

while(1) //程序循环

{ ;//主程序在这里就不断自循环,实际应用中,这里是做主要工作

//for循环只是起个延时的作用

for(n=0;n

scale++;//就是说每次for循环延时结束后scale占空比增加一次,直到scale==10

if(scale==10)scale=0;

}

}

//1/1200秒定时器2中断 中断程序独立的,不管何时只要中断的条件到了就调用它,本程序的条件是 定时器T2的定时到了

timer2() interrupt 5

{

static uchar tt; //tt用来保存当前时间在一秒中的比例位置

TF2=0;

tt++;

if(tt==10) //每1/120秒整开始输出低电平

{

tt=0;

if(scale!=0) //这里加这一句是为了消除灭灯状态产生的鬼影

P10=0;

}

if(scale==tt) //按照当前占空比切换输出高电平

P10=1;

}

6.单片机C语言入门

1,首先要学习C语言基础,就相当于80%会单片机了,因为现在所有8/16/32位(51系列,MSP430系列,ARM系列)都是使用C语言。

2,听起来单片机比较陌生,不是因为不懂,而是不知道方法和流程。现简单说说,仅供参考;

3,看一下单片机功能:包换内部FLASH、RAM、TIMER、INT、ADC、USB、ISP/IAR等。

4,编译环境、编程软件KEIL。

5,打开开发板的例子程序,在KEIL编译,下载到板,看结果和说明是不是相符,达到这样效果时,心里肯定很激动,这时真正学会了单片机,成功了。

6,然后再学会看电路图,电路图其实很简单,就是一根线从一个地方连接到另一个地方,写代码时,只记住单片机是哪一个管脚,然后对它写代码即可。

总结:实验很重要,要多参与这样的项目开发,方能进步。

7.51单片机 c语言看门狗程序怎么写

看门狗在51单片机电路里的作用是防止程序 “跑飞”、“死机”后,系统不动作,而采取复位的办法“唤醒”系统。

89S51、89S52系列单片机自带有看门狗功能,片内数据区A6H寄存器具有看门狗功能,使用很简单:#include。sfr WDTRST = 0xA6;。

void main() { WDTRST=0x1E;;//初始化看门狗 WDTRST=0xE1;//初始化看门狗 for(;;) { WDTRST=0x1E;;//喂狗指令 WDTRST=0xE1;//喂狗指令 } } 可见,你只要在程序的大循环体内加一条喂狗指令就行。但这种看门狗功能有限,不是很可靠的,它依靠晶振工作,一旦晶振不起振,就无效了。

实践中多采用外部看门狗的方法,可以选用的芯片很多:MAX708、MAX813 、X25045。..具体编程就要看芯片的参考资料了。

例如:X25045是SPI总线的看门狗芯片,复位端和单片机复位端连接,SPI数据输入你可以选择合适的IO接口。WREN 0x06 设置写允许位 WRDI 0x04 复位写允许位 RDSR 0x05 读状态寄存器 WRSR 0x01 写状态寄存器 READ 0x03/0x0b 读操作时内部EEPROM页地址 WRITE 0x02/0x0a 写操作时内部EEPROM页地址 #include sbit CS= P2^7; sbit SO= P2^6; sbit SCK= P2^5; sbit SI= P2^4; #define WREN 0x06 // #define WRDI 0x04 // #define RDSR 0x05 // #define WRSR 0x01 // #define READ0 0x03 // #define READ1 0x0b // #define WRITE0 0x02 // #define WRITE1 0x0a // #define uchar unsigned char uchar ReadByte() //read a byte from device { bit bData; uchar ucLoop; uchar ucData; for(ucLoop=0;ucLoop<8;ucLoop++) { SCK=1; SCK=0; bData=SO; ucData<<=1; if(bData) { ucData|=0x01; } } return ucData; } void WriteByte(uchar ucData)//write a byte to device { uchar ucLoop; for(ucLoop=0;ucLoop<8;ucLoop++) { if((ucData&0x80)==0) //the MSB send first {SI=0;} else {SI=1;} SCK=0; SCK=1; ucData<<=1; } } uchar ReadReg() //read register { uchar ucData; CS=0; WriteByte(RDSR); ucData=ReadByte(); CS=1; return ucData; } uchar WriteReg(uchar ucData) //write register { uchar ucTemp; ucTemp=ReadReg(); if((ucTemp&0x01)==1) //the device is busy return 0; CS=0; WriteByte(WREN);//when write the WREN, the cs must have a high level CS=1; CS=0; WriteByte(WRSR); WriteByte(ucData); CS=1; return 1; } void WriteEpm(uchar cData,uchar cAddress,bit bRegion) /* 写入一个字节,cData为写入的数,cAddress为写入地址,bRegion为页 */ { while((ReadReg()&0x01)==1); //the device is busy CS=0; WriteByte(WREN); //when write the wren , the cs must have a high level CS=1; CS=0; if(bRegion==0) { WriteByte(WRITE0);} //write the page addr else {WriteByte(WRITE1);} WriteByte(cAddress); WriteByte(cData); SCK=0; // CS=1; } uchar ReadEpm(uchar cAddress,bit bRegion) /* 读入一个字节,cAddress为读入地址,bRegion为页 */ { uchar cData; while((ReadReg()&0x01)==1);//the device is busy CS=0; if(bRegion==0) {WriteByte(READ0); } else {WriteByte(READ1);} WriteByte(cAddress); cData=ReadByte(); CS=1; return cData; } main() { WriteReg(0x00);//set the watchdog time as 1.4s CS=1; CS=0; //reset the watchdog } 回复: xuzhimin9514 所有的89S系列都带狗,所有的80C系列都不带狗。

所以89S51 89S52都带狗,80C51、80C52都不带狗。

8.51单片机C语言编程

代码如下:

typedef union {

unsigned int myvalue;

struct{

unsigned myvalueL:8;

unsigned myvalueH:8;

}child;

}_mytype;

_mytype mytype;

void main()

{

mytype.myvalue = 0x1234;

}

仿真如下:

是你要的结果吧

51单片机c语言怎么写

转载请注明出处育才学习网 » 51单片机c语言怎么写

知识

umbrella音标是什么怎么写

阅读(487)

本文主要为您介绍umbrella音标是什么怎么写,内容包括英语单词umbrella怎么读音标是什么,umbrella的音标是什么,雨伞的音标怎么读是什么。

知识

竖横笔画怎么写

阅读(334)

本文主要为您介绍竖横笔画怎么写,内容包括横竖的竖怎么写,横竖的竖笔顺怎么写,横竖怎么写。横竖怎么写?横竖的竖怎么写,可以参考以下内容。1竖是上下结构,先写上边的部分,后写下边的立。2上边部分按从左向右的书写规则,先写两竖。3

知识

况字草书怎么写

阅读(324)

本文主要为您介绍况字草书怎么写,内容包括况字草书怎么写,况字草书怎么写,情况的况字怎么写。草书写法:

知识

自田字格怎么写

阅读(1268)

本文主要为您介绍自田字格怎么写,内容包括“自”字田字格怎么写,自田字格正确写法,自田字格正确写法。“自”字田字格写法如图所示: 释义: 1.自己:自动。自卫。自 2.自然;当然:自不待言。公道自在人心。两人久别重逢,自有许多话说。

知识

工程指令单怎么写

阅读(227)

本文主要为您介绍工程指令单怎么写,内容包括建筑上的《工程指令》具体需要些什么内容呢怎么写谢谢,急急急,工程联系单要怎么写,如何审核与分析工程指令单。工程联系单:用于甲乙双方日常工作联系。只需建设、监理(或设计)、施工单位签认。 例如

知识

广东漫画作文怎么写

阅读(214)

本文主要为您介绍广东漫画作文怎么写,内容包括2016广东高考漫画作文怎么写,今天广东高考作漫画作文的含义,漫画作文怎么写。2016年湖南、广东等省高考使用全国一卷,今年全国一卷是漫画材料作文,材料作文的回归颇有些出人意料,很可能让一些考生

知识

两点15怎么写

阅读(264)

本文主要为您介绍两点15怎么写,内容包括两点十五用英语表达两种方法怎么做,两点20分、七点40分、五点15分英语分别怎么写,2点15分英文怎么写。邢冰为你解答,希望对你有帮助:古人把一昼夜划分成十二个时段,每一个时段叫一个时辰。十二时辰既可

知识

作文结尾前段怎么写

阅读(246)

本文主要为您介绍作文结尾前段怎么写,内容包括怎样写好作文开头结尾,作文的开头结尾怎么才写得好,怎样写作文开头和结尾。先说的结尾,后面是开头。 作文的结尾技巧 如果把开头比作“爆竹”,那么结尾就有如“撞钟”。古人说过:“好的结尾,有如咀

知识

永远放不下她的繁体字怎么写

阅读(324)

本文主要为您介绍永远放不下她的繁体字怎么写,内容包括我对你的爱永远放不下繁体字怎么打,我对你的爱永远放不下繁体字,“放不下”的繁体字怎样写。放不下忘不了的繁体字

知识

给客户发报价单英文邮件怎么写

阅读(1034)

本文主要为您介绍给客户发报价单英文邮件怎么写,内容包括怎样用英文告诉客户你明天会把详细的报价单发邮件给他,给客户报价后跟进的英文邮件怎么写,如何写给客户报价后跟进的英文邮件。货代要求我们付有关费用1300元,但我们这批货成交的金额

知识

开学一周总结作文怎么写

阅读(230)

本文主要为您介绍开学一周总结作文怎么写,内容包括开学第一周的总结与下周的计划作文五百字,一周总结作文,巜开学一周的感受>>作文怎么写。开学一周了这是一个特殊而美好的日子,迎着清爽的晨风,我跨入了那熟悉而陌生的校园,心中感慨万分。 一

知识

耸立的拼音怎么写

阅读(687)

本文主要为您介绍耸立的拼音怎么写,内容包括大雁塔耸立在西安南郊用拼音怎样写,“参天耸立”的读音是什么,高而直地耸立怎样拼音。“参天耸立”的读音是:cān tīan sǒng lì。高高地直立,形容山或者建筑物很高,直入云霄。出处:《白杨礼赞》中

知识

老笔字从此怎么写

阅读(304)

本文主要为您介绍老笔字从此怎么写,内容包括老笔字怎么写,从零开始老笔字怎么写,从此改变真笔字从此改变的真笔字是怎么写的。从此改变真笔字,如下:

知识

金鱼的观察日记可以怎么写

阅读(275)

本文主要为您介绍金鱼的观察日记可以怎么写,内容包括写小金鱼的观察日记怎么写400字,观察金鱼的日记怎么写,小金鱼观察日记三篇20字。篇一:小金鱼观察日记 2012年3月15日 星期日 晴 我家养了几条小金鱼,我经常注意观察它们。 金鱼在水里悠闲

知识

外祖父各国语言怎么写

阅读(241)

本文主要为您介绍外祖父各国语言怎么写,内容包括童年对外祖父的语言描写,你好的各国语言怎么说,以颁奖词的形式写童年外祖父。你好-中文;hello-英文;مرحبا -阿拉伯语;tere-爱沙尼亚语;- cześć-波兰语;hej-丹麦语;Hallo-德语;П

知识

c语言float怎么用

阅读(1013)

本文主要为您介绍c语言float怎么用,内容包括C语言中float是什么意思,C语言中,float怎么使用,比如用float定义1.5,结果是多少,double,C语言中floatdouble的用法是什么。float是C语言的基本数据类型中的一种,表示单精度浮点数。C语言规定单精

知识

语言用英文怎么说

阅读(306)

本文主要为您介绍语言用英文怎么说,内容包括语言的英文怎么写,语言用英语怎么说,“语言”用英文怎么写。语言的英文是:language 读音:英 [læŋɡwɪdʒ] 美 [læŋɡwɪdʒ] 释义:语言;语言文字;表达方式 词语用法 la

知识

c语言指针怎么用

阅读(225)

本文主要为您介绍c语言指针怎么用,内容包括c语言中指针怎么使用,c语言中指针怎么使用,c语言指针用法。指针指向变量:下面有这样一个代码块:int main() {int a=10;int b=15;test(a,b);printf("a=

知识

怎么用c语言编程

阅读(253)

本文主要为您介绍怎么用c语言编程,内容包括C语言编程实现从1到100的求和,如何用C语言编写自己的姓名和学号,c语言编程怎样入门。清楚算法就可以很快写出:(1)只需输入2个变量n和sum,且sum=n+sum.(2)确定n的范围为n<=100 (3)循环体为 for

知识

c语言怎么写计算器

阅读(218)

本文主要为您介绍c语言怎么写计算器,内容包括用C语言编写一个简单的计算器1,C语言怎么做计算器,c语言设计一个简单的计算器程序。#include<stdio.h>int main() {double num1 = 0; //输入1double num2 = 0;

知识

语言文字英语怎么写

阅读(283)

本文主要为您介绍语言文字英语怎么写,内容包括“语言”用英文怎么写,"我喜欢你"各国语言的书写怎么写,语文用英语怎么说。language 读音:英 [læŋɡwɪdʒ] 美 [læŋɡwɪdʒ] language泛指“语言”时是不可数名词,在句中可用作定

知识

单片机毕业设计怎么写

阅读(236)

本文主要为您介绍单片机毕业设计怎么写,内容包括单片机的毕业论文怎么写,单片机的毕业论文怎么写,单片机毕业设计题目可以参考。毕业设计题目及要求(2个) 基于单片机控制的电动机Y-△启动的设计 要求:1)控制器为单片机,电动机为三相异步电动机;2)

[/e:loop]