KEY4EQU30H
KEY2EQU31H
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
CLREA
MOVSP,#5FH
MOVKEY2,#0
MOVKEY4,#0
LOOP:
JBP1.0,LOOP
MOVR7,#10
LCALLDELAY
JBP1.0,LOOP
JNBP1.0,$
MOVP3,#0C0H
LOOP0:
LCALLKEYDEAL
MOVA,KEY4
JNZLOOP41
MOVA,P3
ANLA,#0F0H
ORLA,#0EH
MOVP3,A
SJMPLOOP21
LOOP41:
DECA
JNZLOOP42
MOVA,P3
ANLA,#0F0H
ORLA,#0DH
MOVP3,A
SJMPLOOP21
LOOP42:
DECA
JNZLOOP43
MOVA,P3
ANLA,#0F0H
ORLA,#0BH
MOVP3,A
SJMPLOOP21
LOOP43:
DECA
JNZLOOP21
MOVA,P3
ANLA,#0F0H
ORLA,#07H
MOVP3,A
LOOP21:
MOVA,KEY2
JNZLOOP22
MOVA,P3
ANLA,#0FH
ORLA,#20H
MOVP3,A
SJMPLOOP3
LOOP22:
DECA
JNZLOOP3
MOVA,P3
ANLA,#0FH
ORLA,#10H
MOVP3,A
LOOP3:
LJMPLOOP0
;----------------------------
DELAY:
MOVR2,#2
DLY1:
MOVR3,#250
DJNZR3,$
DJNZR2,DLY1
DJNZR7,DELAY
RET
;-----------------------------
KEYDEAL:
JBP1.1,KEYEN1
MOVR7,#10
LCALLDELAY
JBP1.1,KEYEN1
JNBP1.1,$
INCKEY4
MOVA,KEY4
ANLA,#03H
MOVKEY4,A
KEYEN1:
JBP1.2,KEYEN2
MOVR7,#10
LCALLDELAY
JBP1.2,KEYEN2
JNBP1.2,$
INCKEY2
MOVA,KEY2
ANLA,#01H
MOVKEY2,A
KEYEN2:
RET
;-----------------------------
2. 单片机编程可以用c语言吗
当然可以,去问老师,都会的,在学校里用汇编编单片机的程序只是为了让你练习汇编语言而已,单片机编程本来就是用c语言编的。
3. 如何快速的学会单片机C语言编程
很多想学单片机的人问我的第一句话就是怎样才能学好单片机?对于这个问题我今天就我自己是如何开始学单片机,如何开始上手,如何开始熟练这个过程给大家讲讲。
先说说单片机,一般我们现在用的比较多的的MCS-51的单片机,它的资料比较多,用的人也很多,市场也很大。就我个人的体会怎么样才能更快的学会单片机这门课。单片机这门课是一项非常重视动手实践的科目,不能总是看书,但是学习它首先必须得看书,因为从书中你需要大概了解一下,单片机的各个功能寄存器,而说明白点,我们使用单片机就是用软件去控制单片机的各个功能寄存器,再说明白点,就是控制单片机那些管脚的电平什么时候输出高,什么时候输出低。由这些高低电平的变化来控制你的系统板,实现我们需要的各个功能。至于看书,只需大概了解单片机各管脚都是干什么的?能实现什么样的功能?第一次,第二次你可能看不明白,但这不要紧,因为还缺少实际的感观认识。所以我总是说,学单片机看书看两三天的就够了,看小说你一天能看五六本,看单片机你两三天看两三遍就够了,可以不用仔细的看。推荐一本书,就这一本就足够,书名是《新编MCS-51单片机应用设计》,是哈尔滨工业大学出版社出的的,作者是张毅刚。大概了解一下书上的内容,然后实践,这是非常关键的,如果说学单片机你不实践那是不可能学会的,关于实践有两种方法你可以选择,一种方法:你自己花钱买一块单片机的学习板,不要求功能太全的,对于初学者来说你买功能非常多的那种板子,上面有很多东西你这辈子都用不着,我建议有流水灯、数码管、独立键盘、矩阵键盘、AD或DA(原理一样)、液晶、蜂鸣器,这就差不多了。如果上面我提到的这些,你能熟练应用,那可以说对于单片机方面的硬件你已经入门了,剩下的就是自己练习设计电路,不断的积累经验。只要过了第一关,后面的路就好走多了,万事开头难,大家可能都听过。方法二:你身边如果有单片机方面的高手,向他求助,让他帮你搭个简单的最小系统板。对于高手来说,做个单片机的最小系统板只需要一分钟的时间,而对于初学者可就难多了,因为只有对硬件了解了,才能熟练运用。而如果你身边没有这样的高手,又找不到可以帮助你的人,那我劝你最好是自己买上一块,毕竟自己有一块要方便的多,以后做单片机类的小实验时都能用得上,还省事。
有了单片机学习板之后你就要多练习,最好是自己有台电脑,一天少看电影,少打游戏,把学习板和电脑连好,打开调试软件坐在电脑前,先学会怎么用调试软件,然后从最简单的流水灯实验做起,等你能让那八个流水灯按照你的意愿随意流动时你已经入门了,你会发现单片机是多么迷人的东西啊,太好玩了,这不是在学习知识,而是在玩,当你编写的程序按你的意愿实现时你比做什么事都开心,你会上瘾的,真的。做电子类的人真的会上瘾。然后让数码管亮起来,这两项会了后,你已经不能自拔了,你已经开始考虑你这辈子要走哪一行了。就是要这样练习,在写程序的时候你肯定会遇到很多问题,而这时你再去翻书找,或是问别人,当得到解答后你会记住一辈子的,知识必须用于现实生活中,解决实际问题,这样才能发挥它的作用,你自己好好想想,上了这么多年大学,天天上课,你在课堂上学到了什么?是不是为了期末考试而忙碌呢?考完得了90分,哈哈哈好高兴啊,下学期开学回来忘的一干二净,是不是?你学到什么了?但是我告诉你单片机一旦学会,永远不会忘了。另外我再说说用汇编和C语言编程的问题。很多同学大一二就开设了C语言的课,我也上过,我知道那时天天就是几乘几,几加几啊,求个阶乘啊。学完了有什么用?让你用C语言编单片机的程序你是不是就傻了?书上的东西我们必须要会运用。单片机编程用C语言或汇编语言都可以,但是我建议用C语言比较好,如果原来有C语言的基础那学起来会更好,如果没有,也可以边学单片机边学C语言,C语言也挺简单,只是一门工具而已,我劝你最好学会,将来肯定用得着,要不你以后也得学,你一点汇编都不会根本无所谓,但你一点C语言都不会那你将来会吃苦头。汇编写程序代码效率高,但相对难度较大,而且很罗嗦,尤其是遇到算法方面的问题时,根本是麻烦的不得了,现在单片机的主频在不断的提高,我们完全不需要那么高效率的代码,因为有高频率的时钟,单片机的ROM也在不断的提高,足够装得下你用C语言写的任何代码,C语言的资料又多又好找,将来可移植性非常好,只需要变一个IO口写个温度传感器的程序在哪里都能用,所以我劝大家用C语言。
总结上面,只要你有信心,做事能坚持到底,有不成功不放弃的强烈意志,那学个单片机来说就是件非常容易的事。
步骤:1.找本书大概了解一下单片机结构,大概了解就行。不用都看懂,又不让你出书的。(三天)
2.找学习板练习编写程序,学单片机就是练编程序,遇到不会的再问人或查书。 (二十天)
3.自己网上找些小电路类的资料练习设计外围电路。焊好后自己调试,熟悉过程。 (十天)
4.自己完全设计具有个人风格的电路,产品,。。。你已经是高手了。 。。。。
看到了吗?下功夫一个多月你就能成为高手,我就讲这么多了,学不学得会,下不下得了功夫就看你的了。
参考资料:
4. 单片机编程用汇编好还是C语言好
单片机编程,C语言编程但很好。
大致分成三类:机器语言、汇编语言、高级语言。机器语言由于繁琐容易出错,大部分用户已经不再便用。
1.单片机汇编语言
汇编语言是一种符号语言,它使用文字助记符来表示机器指令。它是最接近机器代码的语言。它的主要优点是占用资源少,程序执行效率高。由于每条指令对应于一个机器码,所以每一步的执行都非常清楚。
并且程序的大小和栈调用都易于控制,调试也更加方便。但是不同类型的单片机,其汇编语言可能会有一点不同,所以移植起来并不容易,因为它们的指令系统是不同的。但掌握汇编语言可以帮助我们理解影响四川语学习效率的特殊规律。
例如,了解汇编语言指令可以让您使用芯片内ram作为变量,因为芯片外变量需要多个指令来设置访问的累加器和数据指针。
类似地,只有汇编编程经验才能防止在需要浮点数和启用函数时创建大型、低效的程序,这在没有汇编语言的情况下是无法做到的。
2.单片机的C语言
MCUC语言是一种经过编译的程序设计语言,它兼顾了多种高级语言的特点,具有汇编语言的功能。C语言具有丰富的库函数,计算速度快,编译效率高,可移植性好,并能实现对系统硬件的直接控制。
此外C语言程序具有完整的程序模块结构,为软件开发中的模块化编程方法提供了强有力的保证。与组装相比,具有以下优点:
MCU的指令系统不需要知道,只需要对51的内存结构有一个初步的了解,对于寄存器的分配,不同的内存寻址和数据类型等细节都由编译器来管理。程序有一个正式的结构,可以分为不同的功能。这使得程序可以结构化,结合变量选择和特殊操作,并提高程序的可读性。
大大减少了编程和调试时间,从而提高了效率。所提供的库包含许多具有强大数据处理能力的标准子例程,由于其方便的模块化编程技术,可以很容易地将这些子例程编程到新程序中。
功能强大灵活,库中包含了很多标准的子程序,具有较强的数据处理能力,可以方便地编程植入新的程序,因为它具有方便的模块化编程技术。
MCUC语言作为一种非常方便的语言而得到了广泛的支持,(语言程序本身不依赖于机器硬件系统,基本上不根据单片机的修改就可以将U的不同之处快速移植过来。)
利用单片机c语言进行编程,已经成为单片机软件开发的主流,作为一门综合性的技术和参与开发的大型软件系统,单片机开发人员最好能够掌握基本的c语言编程。
(4)单片机编程c扩展阅读:
SCM语言
MCU支持三种高级语言,即PL/M、C和BASIC。C语言是一种通用的编程语言,其码率高,数据类型和运算符丰富,并具有良好的程序结构,适用于各种应用程序的设计,是一种广泛应用的单片机编程语言。
单片机的C语言采用C51编译器(简称C51)。C51生成的目标代码短小、快速、存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,可与A51汇编语言或PL/M51语言目标代码混合使用
5. 单片机C语言编程教程
单片机c语言编程入门教程说难不难,说易不易,学习单片机c语言首先就要明白这两样东西是啥?单片机入门编程主要是学C语言,其次就是电路跟编程语言。
单片机c语言编程学习必看的关于模电,数电,电路这三本书,为接下来的学习做铺垫。看书的目的是因为网上的教程太多太混杂,容易带偏,做单片机软件开发其实只要看得懂电路原理就可以了。
简介
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。
概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
从二十世纪九十年代开始,单片机技术就已经发展起来,随着时代的进步与科技的发展,目前该技术的实践应用日渐成熟,单片机被广泛应用于各个领域。现如今,人们越来越重视单片机在智能电子技术方面的开发和应用,单片机的发展进入到新的时期。
无论是自动测量还是智能仪表的实践,都能看到单片机技术的身影。当前工业发展进程中,电子行业属于新兴产业,工业生产中人们将电子信息技术成功运用,让电子信息技术与单片机技术相融合,有效提高了单片机应用效果。
作为计算机技术中的一个分支,单片机技术在电子产品领域的应用,丰富了电子产品的功能,也为智能化电子设备的开发和应用提供了新的出路,实现了智能化电子设备的创新与发展。
以上内容参考:网络-单片机
6. 如何快速的学会单片机C语言编程 你知道吗
1、重点是:多看,多写,多练,多思考。
2、单片机有很多种,每种的侧重都有不同,在自己想深入的单片机方向选择一本经典教材,然后将心沉入教材,开始用功学习。切记不要只看书,要读懂书中例子程序,且动手编程实现它。
3、学习编程语言最好的方法是读程序,读程序是学习C语言入门最快,也是最好的方法。我们大家都应该有个体验。读了之后就要写,这一点来不得半点懒惰。如果你C语言功底扎实,按照选定教材钻研几天便可上手开发单片机软件。
7. 单片机 c语言编写
单片机C语言编写与普通电脑C语言类似,只不过硬件成分更多些。比如:
#include<reg51.h>
#define uchar unsigned char
uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9
unsigned char sec=0,min=0,hour=12,scanled;
unsigned char key,time;
unsigned char disdat[6];
sbit K=P1^0;
void dischg()
{
disdat[0]=sec%10;
disdat[1]=sec/10;
disdat[2]=min%10;
disdat[3]=min/10;
disdat[4]=hour%10;
disdat[5]=hour/10;
}
void t0isr() interrupt 1 //秒计时
{
TR0=0;
TH0=0x3c;
TL0=0xb0;
TR0=1;
time++;
if(time==20)
{
time=0;
sec++;
if(sec>59)
{
sec=0;
min++;
if(min>59)
{
min=0;
hour++;
if(hour>23)hour=0;
}
}
}
dischg();
}
void t1isr() interrupt 3 //显示
{
TH1=0xec;
TL1=0x78;
switch(scanled)
{
case 0:
P2=0x01;
P0=~ledtab[disdat[5]];
break;
case 1:
P2=0x02;
P0=~ledtab[disdat[4]];
break;
case 2:
P2=0x04;
P0=~ledtab[disdat[3]];
break;
case 3:
P2=0x08;
P0=~ledtab[disdat[2]];
break;
case 4:
P2=0x10;
P0=~ledtab[disdat[1]];
break;
case 5:
P2=0x20;
P0=~ledtab[disdat[0]];
break;
default:break;
}
scanled++;
scanled%=6;
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xec;
TL1=0x78;
EA=1;
TR1=1;
ET0=1;
ET1=1;
sec=50;
min=59;
hour=23;
scanled=0;
time=0;
key=0;
dischg();
while(1)
{
if(K==0)
{
while(K==0);
key++;
key%=2;
}
switch(key)
{
case 0:
TR0=1;
break;
case 1:
TR0=0;
break;
}
}
}
8. 单片机c语言编程
单片机C语言程序设计入门课程,说起来容易,说起来难。学习单片机C语言,首先要了解这两个东西是什么。单片机入门编程主要是学习C语言,其次是电路和编程语言。单片机C语言程序设计学习中必读的模拟电、数字电、电路三本书,为接下来的学习做铺垫。看书的目的是因为网上教程太多,容易出现偏差。其实只要能懂电路原理,就能开发单片机软件。简介单片机又称单片微控制器,不是执行某种逻辑功能的芯片,而是将一个计算机系统集成到一个芯片中。相当于一台微型计算机,与计算机相比,单片机只是缺少I/O设备。综上所述,芯片变成了电脑。它体积小、重量轻、价格低,为研究、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理和结构的最佳选择。单片机已经广泛应用于智能仪器、实时工业控制、通讯设备、导航系统、家用电器等领域。自20世纪90年代以来,单片机技术得到了发展。随着时代的进步和科技的发展,这项技术的实际应用也越来越成熟,单片机被广泛应用于各个领域。如今,人们越来越重视单片机在智能电子技术中的发展和应用,单片机的发展进入了一个新的时期。无论是自动测量的实践,还是智能仪器的实践,都可以看到单片机技术的身影。在当前的产业发展过程中,电子产业是一个新兴的产业。在工业生产中,人们已经成功地应用了电子信息技术,将电子信息技术与单片机技术相结合,有效地提高了单片机的应用效果。作为计算机技术的一个分支,单片机技术在电子产品领域的应用丰富了电子产品的功能,为智能电子设备的开发和应用提供了新的途径,实现了智能电子设备的创新和发展。以上内容参考:网络-单片机
你应该先学习C语言。你可以读谭浩强和单片机的书,循序渐进。别担心。基础好,什么都能说。
如果你没学过微机原理,建议你先学完再买本上海马超的书,一周就能看懂了~
不认同无意义的光。《C编程》确实创造了一时的辉煌,这种辉煌很可能会延续下去,但不代表就是最好的。这本书之所以流行,是因为当时没有办法学习C,这本书很好理解。但是现在这本书太落后了,甚至3版还在用老标准,现在大家普遍用C99标准。老标准不能用Dev C编译而且好像提问者应该知道C的基础,推荐《单片机C语言编程及实例》这本书。直接搜索就能找到PDF版本的下载。-马克·提埃洛
看谭浩强老师的。清华大学出版的《饥饿》。
9. 用C语言进行单片机编程
/*******************************************************************************
*
文件名称:LED流水灯控制实验
*
实验目的:掌握单片机IO口操作的基本方法
*
程序说明:无
*
日期版本:
*******************************************************************************/
#include
"reg52.h"
//定义51单片机特殊功能寄存器
#include
"intrins.h"
//延时函数
void
delay(void)
{
unsigned
char
i,j,k;
for(i=0;
i<20;
i++)
{
for(j=0;
j<20;
j++)
{
for(k=0;
k<248;
k++);
}
}
}
//主函数
void
main(void)
{
unsigned
char
i;
while(1)
{
for(i=0;
i<8;
i++)
{
P2
=
((P2&0x1f)|0x80);
P0
=
~(0x01<<i);
//左移i位,按位取反
P2
&=
0x1f;
delay();
}
}
}
给你一条用c语言编程的流水灯,型号自己选择。
10. at89c51单片机 如何用c语言编程啊
随着单片机硬件性能的提高,编写应用程序更着重于程序本身的效率。
Franklin或KEII.C51交叉编译器是专为51系列单片机设计的一种高效的C语言编译器,用其开发的应用程序易于维护,可移植性好,是目前较流行的51系列单片机的开发工具。
一、C51语言程序设计的基本技巧
首先,C51语言程序设计要尽可能采用结构化的设计方法。可将整个程序按功能分成若干个模块,不同的模块完成不同的功能。对于不同的功能模块,分别指定相应的入口参数和出口参数,而经常使用的一些程序最好编成函数,这样既不会引起整个程序管理的混乱,还可使程序的可读性、移植性增强。
C51语言的主程序结构:
#include
main0{while(1);}
这是最小的C程序,包括头部文件和程序主体。头部文件为引用的外部资源文件,包括硬件信息和外部模块提供的可使用的函数和变量的说明。
语句定义后,就可以在C语言程序中像汇编一样使用这些硬件设备。
在C5l中常用项目来管理,项目一般分为C文件块和头部文件块,常把不同的功能写在不同的C文件中,依靠项目的管理,最后把所有文件连接起来,这样就可以得到烧录的HEX文件或BIN文件。没有在头部文件中列出的文件,可以算是该C文件的内部函数和变量,外部C不能使用。另外,在程序设计过程中要充分利用C51语言的预处理命令。
对于一些常用的常数,如TRUE、FAlSE、PI,以及各种特殊功能寄存器,或程序中一些重要的依据外界条件可变的常量,可采用宏定义(#de-fine)或集中起来放在一个头文件中进行定义,再采用文件包含命令(#in-elude)将其加入到程序中,这样当需要修改某个参量时,只需修改相应的包含文件或宏定义,而不必对使用它们的每个程序文件都进行修改,有利于文件的维护和更新。
举例:利用宏定义和条件编译,源程序不作任何修改就可适用于不同时钟频率的单片机系统,并可根据情况的不同取不同的delay值,完成不同的目的。程序如下:
#define flag 1#ifdef flag==l#define fose 6Mdelay=10;#elif flag==0#define fose 8Mdelay=12;#else#define fosc 12Mdelay=20;#endiFMain0{ for(I=O;l