51单片机程序编写(劳驾写得详细一点)?

作者&投稿:壹飞 (若有异议请与网页底部的电邮联系)
C语言的指针,在写51单片机程序用得上吗?~

可以的。
在51单片机的嵌入式C语言中,指针同样是被支持的。
所以在单片机上一样可以使用指针操作,具体使用方法,与标准C语言并没有不同。
不过需要注意的是,使用指针代表着间接寻址,相对变量的直接寻址,速度要稍慢一些。而单片机运算速度较慢,大量使用指针有可能会降低执行效率,影响效果。所以除非必要,还是少用指针。

程序写入51系列的单片机要在相应的管脚加高电压,还要按照规定的时序工作,电脑串口满足不了它的要求,所以要配套的烧录机。其实也就是一个小装置,再配上软件。程序写入前最好用仿真器调试,没有仿真器也要在电脑上用仿真软件调试成功。
51系列单片机指令很丰富,好多是多字节指令,功能强大,是十几年前流行的主力品种,当时高校的老师都是用它教学生,所以桃李满天下。现在许多单片机采用精简指令集结构,指令数量少,多数是单、双字节指令,运行速度快,而且有众多的型号供用户选择,如带A/D、D/A等附加功能的型号,你可以搜索PIC系列的资料看看。可以这么说:你做的项目想要些什么功能组合,市场就有满足你要求的单片机供你选择。
总之,51系列更像是通用型的CPU,而不是为某个项目定制的单片机。因此,入门可以学51系列,实际应用还是精简指令的好。
补充:
51系列单片机根深蒂固,厂家是不愿意退出历史舞台的,89S51虽然用新技术改进了设计,跟上时代的步伐,但是它的指令系统还是没变化。你参考以下网页了解89S51的资料。
http://zhpos.cn/article.asp?id=623
http://www.mcufan.com/xiazai.htm

#include <reg51.h>
void delay(unsigned int n)
{
while(n--);
}
void main()
{
char i;
//可以编好想要怎么流水的灯位的状态
unsigned char led[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
while(1)
{
for(i=0;i<8;i++)
{
P1=led[i]; //LED接在P1口
delay(10000);
}
for(i=0;i<8;i++)
{
P1=led[8-i];
delay(10000);
}
}
}

#include <reg51.h>
void delay(unsigned int x)
{
while(x--);
}
void main() //
{
unsigned char i,j;
while(1)
{
i= 0x01;
for(j=0;j<8;j++)
{
P1=~i;
delay(20000);
i=i<<1;
}
i= 0x80;
for(j=0;j<8;j++)
{
P1=~i;
delay(20000);
i=i>>1;
}
}

#include <reg51.h>
void delay(unsigned int n)
{
while(n--);
}
void main()
{
unsigned char n=0;
unsigned char val[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned char led=0;
while(1)
{
if ( n<8 ) led = val[n];
else led = val[15-n];
P1=led;
n++;
if ( n>15 ) n=0;

delay(10000);
}
}


如何用KeilC编写单片机程序?
1、首先在电脑桌面中,双击“Keil4”图标打开软件。2、点击上部菜单栏中的“工程”,在下拉菜单中选择“新建工程文件”。3、把工程文件保存到目标文件夹里去,工程文件命名可以随意写入一些数字。4、选择单片机类型,根据实际情况进行选择,例如“Atmel”中的“89C52”。5、点击“文件”,在“文件”的下拉...

单片机程序编写
Atmel-》AT89c52即可。如下第二张图所示)4、一路点击确认后回到如下图所示的主界面,并如下图所示点击新建程序输入文本 5、点击后出现如下第一张图所示界面,并点击保存按钮 6、点击保存按钮后出现下第一张图所示对话框,在箭头所指的地方输入源文件名称加后缀名(如果你是用C语言编写程序后缀名为*.c...

单片机程序编写。 1.试编写程序,将内部RAM以30H开始的3个连续但愿的内...
1.试编写程序,将内部RAM以30H开始的3个连续但愿的内容一次存入2FH,2EH和2DH单元。MOV 2FH,30H MOV 2EH,31H MOV 2DH,32H 2.试编写程序,完成两个16位数的剪发,5C3BH-3D46H,结果存入内部RAM的30H和31H单元,31H单元存差的高8位,30H单元存低8位。CLR C MOV A,#3BH SUBB A,#46H ...

单片机如何烧写程序?
1.首先,编辑keil上的代码,用keil4进行编译,在项目文件夹中找到已编译的十六进制文件,并将其写入SCM文件中。2.现在,我们需要一个写对写的软件来编写程序,这里使用的是stc-isp软件。3.打开软件,首先选择合适的知道单片机型号,这里使用的是stc89C52。那么串口自动一般是不错的选择,你也可以自己...

编写简单的单片机c语言程序 1、指定数组找最大值 2、排序
max=ar[0];\/\/假定第一个数为最大值 min=ar[0];\/\/同时假定也第一个数为最大值 \/*从第二个数开始比较查找最值*\/ for(i=1;i<NR;i++){ if(ar[i]>max)\/\/最大值 { max=ar[i];} if(ar[i]<min)\/\/最小值,不能使用elseif,否则会跳过比较 { min=ar[i];} } fprintf(stdout...

51单片机程序编写(劳驾写得详细一点)?
} void main(){ char i;\/\/可以编好想要怎么流水的灯位的状态 unsigned char led[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};while(1){ for(i=0;i<8;i++){ P1=led[i]; \/\/LED接在P1口 delay(10000);} for(i=0;i<8;i++){ P1=led[8-i];delay(10000);} } ...

51单片机程序编写?
最简程序如下:

设单片机系统如何编写一个完整的C51程序使P1.6和P1?
设单片机系统编写一个完整的C51程序使P1.6和P1,可以使用正确编码加上解压即可。 一、过程: 1、TMOD = 0X02;\/\/工作方式寄存器; 2、TH0 = 56;\/\/8位的用TH; 3、TL0 = 0;\/\/16位跟13位两个都用; 4、EA = 1;\/\/开总中断; 5、TR0 = 1;\/\/定时器开始计数,return。 二、单片机简介: 1、单片机...

利用单片机,如何才能正确的编写出一段程序,编写的步骤是什么?_百度...
51之类的入门级单片机搭建的小程序可以用Keil来编比较方便,C语言记得导入头文件reg51.h或者reg52.h,然后后面用类似普通的C语言语法,注意这里的Keil C51和普通的C不同,比如sbit之类的,因为是交叉编译,所以要注意各个接口,深入学习一定需要看书的。KeilC步骤:1、下载Keil42、project选择芯片类型3、...

C51单片机程序编写
void delay(uchar ms);void main(){ uchar i,LED;\/\/定义两个变量 P2 = 0xFF;\/\/初始化P2口 LED = 0x7F;\/\/初始化变量 while(1){ for(i=0;i<8;i++){ P2 = LED;\/\/LX灯亮其它灭 delay(100);\/\/稳定显示100毫秒,改变参数可以改变流水速率 LED >>= 1;\/\/移动显示位置 LED |= 0x...

黔西南布依族苗族自治州17826629839: 51单片机程序编写 -
紫皆罗西: 第一要解决测速的问题,这个可以利用霍尔元件和磁铁来实现,磁铁固定在电机上,电机每转一圈霍尔元件就能检测一个信号,利用单片机的计数器进行技计算.并把计数的值赋给一个变量NUM,然后利用定时设定一分钟的时间来判断NUM的值是否大于3000或4000,如果成立就执行相应的报警.至于温度可以用18B20因为温度在120度之内,18B20就可以.原理虽然简单但是敲代码还是一件非常枯燥的事情还是自己来完成吧,希望对你有帮助!

黔西南布依族苗族自治州17826629839: 51单片机的编程 -
紫皆罗西: 51编程得看外部电路的连接情况.没有电路图,木有办法写... 数码管和单片机之间的电路有很多种,你这种就用译码器,74138就行.假设单片机p1口用作数码管输出. 滑槽电路也不清楚,假设一个电机,用的是P2^0,P2^1(顺...

黔西南布依族苗族自治州17826629839: 51单片机计数程序怎么写?
紫皆罗西: #include&lt;reg52.h&gt; #include&lt;intrins.h&gt; #define uchar unsigned char//宏定义 #define uint unsigned int uint tt; sbit P1_1=P1^1; sbit P1_1=P1^2; sbit P1_1=P1^3; sbit P1_1=P2^2; unsigned char code LED7Code[] = { 0x3f,0x06,0x5b,0x4f,0x...

黔西南布依族苗族自治州17826629839: 51单片机简单程序
紫皆罗西: MOV DPTR,#1000H MOV B,#20 L1:MOVX A,@DPTR SETB ACC.7 MOVX @DPTR,A INC DPTR DJNZ B,L1

黔西南布依族苗族自治州17826629839: 单片机编程 -
紫皆罗西: 对于51单片机,可以这样: MOV R0,#50H ;数据开始地址 MOV R1,#14H ;循环次数 LOOP: CLR C ;清除C标志 MOV A,@R0 ;装入数据 SUBB A,#0AH ;减去10 JC X10 ;如果小于10,即小于10的数字,跳转到X10 SUBB A,#0AH ;如果...

黔西南布依族苗族自治州17826629839: 单片机的程序怎么编写? -
紫皆罗西: #include//调出头文件,必须写 unsigned cont=0; //初始化程序void main(void) //主程序{ WDTCTL = WDT_ADLY_250; //基本时钟驱动看门狗定时器(WDT)250ms中断 IE1 |= WDTIE; //使能 WDT 中断 FLL_CTL0 |= XCAP14PF; // 设置时钟...

黔西南布依族苗族自治州17826629839: C51单片机的程序 -
紫皆罗西: 加一个while循环就可以了. while(1){.............. 检测到有效输入置标志flag=1; if(flag==1)break; }

黔西南布依族苗族自治州17826629839: 用汇编语言编写一个51单片机的程序 -
紫皆罗西: 首先搞清LED管是高电平导通还是低电平导通. 如果是低电平导通,P1赋0x00时,发光管全亮,0xff时,全灭. 具体程序: #define uint unsigned int #define uchar unsigned char void delay(uint time_out) {uint i,j;for(i=0;i<time_out;i++){for(j=0;...

黔西南布依族苗族自治州17826629839: C51单片机简单程序 -
紫皆罗西: 应该是你上面定义的是unit,下边使用的是uint#include<reg52.h>#define unit unsigned int sbit led1=P1^0; void delay1s(); unit i,j; void main() { while(1) { led1=0; delay1s(); led1=1; delay1s(); } } void delay1s() { unit i,j; for(i=500;i>0;i--) for(j=110;j>0;j--); }

黔西南布依族苗族自治州17826629839: 求写一段简单的51单片机C语言代码 -
紫皆罗西: 单片机检测高电平.1、可以用外部中断,外接激光传感器最好用普通光耦隔离一下,顺便改成低电平触发单片机中断.然后用位移指令移动跑马灯,然后计数值加1. 2、可以用循环检测,也建议用光耦隔离先,在MAIN里面不断检测P00,发现变化后,再次检测以便确认,确认后同样位移一下跑马灯,然后计数加1.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网