单片机c语言编程编程问题

06-0106-0106-0106-01
10-1511-2205-0808-23
也许你感兴趣
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.c51编程(单片机的c语言) -
51单片机学习论坛
- Powered by Discuz!
48 / 22958
223 / 45741
890 / 126496
137 / 68348
773 / 174800
495 / 123081
327 / 82285
1144 / 178101
51 / 25409
179 / 77961
191 / 50143
389 / 45512
303 / 49494
119 / 50370
2122 / 237570
280 / 40028
207 / 46018
148 / 65006
&&版块主题
278 / 42688单片机编程问题_百度知道
单片机编程问题
良好,中等,及格和不及格的人数,这个不会啊,并将各等级的人数存放到内部数据单元31H~35H中。求助单片机编程
建立某课程30人的成绩表(存放在程序数据表中),编程分别统计出优秀
我有更好的答案
汇编不容易哦
;31H&存放优秀人数&成绩大于等于90&;32H&存放良好人数&成绩大于等于80,小于90&;33H&存放中等人数&成绩大于等于70,小于80&;34H&存放及格人数&成绩大于等于60,小于70&;35H&存放不及格人数&成绩小于60&&&&ORG&0000H&&&&AJMP&MAIN&&&&ORG&0100HMAIN:&&&&MOV&A,#0&&&&MOV&31H,A&&&&MOV&32H,A&&&&MOV&33H,A&&&&MOV&34H,A&&&&MOV&35H,A&&&&&&&&MOV&R7,#30&&&&MOV&R0,#00&&&&MOV&DPTR,#TABLE&&&&NEXT_ONE:&&&&&&&&MOV&A,R0&&&&MOVC&A,@A+DPTR;&&&&MOV&R1,A;暂存&&&&CLR&C&;清除标志位CY&&&&CJNE&A,#90,NOQUE90&;A为第1操作数,立即数为第2操作数,比较这两个数,不等则转移&&&&AJMP&NOQUE90_GNOQUE90:&&&&JC&NOQUE90_L&;测试CY,如果CY&=&1(第1操作数小于第2操作数)跳转&&&&AJMP&NOQUE90_G&;大于第2操作数NOQUE90_G:&&&&&&INC&31H&;优秀&&&&AJMP&NEXTNOQUE90_L:&&&&CJNE&A,#80,NOQUE80&&&&AJMP&NOQUE80_GNOQUE80:&&&&JC&NOQUE80_L&;&&&&AJMP&NOQUE80_G&;NOQUE80_G:&&&&&&INC&32H&;良好&&&&AJMP&NEXT&&&NOQUE80_L:&&&&CJNE&A,#70,NOQUE70&&&&AJMP&NOQUE70_GNOQUE70:&&&&JC&NOQUE70_L&;&&&&AJMP&NOQUE70_G&;NOQUE70_G:&&&&&&INC&33H&;中等&&&&AJMP&NEXT&&&NOQUE70_L:&&&&CJNE&A,#60,NOQUE60&&&&AJMP&NOQUE60_GNOQUE60:&&&&JC&NOQUE60_L&;&&&&AJMP&NOQUE60_G&;NOQUE60_G:&&&&&&INC&34H&;及格&&&&AJMP&NEXT&&&NOQUE60_L:&&&&INC&35H&;不及格;&&&&AJMP&NEXT&&&NEXT:;&&&&INC&R0&&&&DJNZ&R7,NEXT_ONE&&&&AJMP&$&&&&ORG&0500HTABLE:&&&&DB&55,60,70,80,90&&&&&DB&56,61,70,81,98&&&&DB&57,62,70,87,98&&&&DB&58,63,70,87,98&&&&DB&59,64,70,82,93&&&&&DB&54,69,79,89,98END实测通过。
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁单片机编程思想
我曾经在此论坛发过一个求帮助贴,寻找单片机C语言编程经验,结果被一些所谓的高手骂的......哎
今天我无意中搜到了一个篇文章,此高手(对我来说)说到初学者的心声啊,我们需要编程的思想来指导
尤其是程序的结构的安排与框架定制,这个东西是很有经验性的,借题发挥吧,我希望更多高手写出自己的经验来
以下这文来自http://chenyuangui..cn/博客写的很好
标题:浅谈单片机程序设计中的“分层思想”,并不是什么神秘的东西,事实上很多做项目的工程师本身自己也会在用。看了不少帖子都发现没有提及这个东西,然而分层结构确是很有用的东西,参透后会有一种恍然大悟的感觉。如果说我不懂LCD怎么驱动,那好办,看一下datasheet,参考一下阿别人的程序,很快就可以做出来。但是如果不懂程序设计的思想的话,会给你做项目的过程中带来很多很多的困惑。
参考了市面上各种各样的嵌入式书籍,MCS-51,AVR&,ARM&等都有看过,但是没有发现有哪本是介绍设计思想的,就算有也是凤毛麟角。写程序不难,但是程序怎么样才能写的好,写的快,那是需要点经验积累的。结构化模块化的程序设计的思想,使最基本的要求。然而这么将这个抽象的概念运用到工程实践当中恩?那需要在做项目的过程中经历磨难,将一些东西总结出来,抽象升华为理论,对经验的积累和技术的传播都大有裨益。所以在下出来献丑一下,总结一些东西。
就我个人的经验而谈,有两个设计思想是非常重要的。
一个就是“时间片轮的设计思想”,这个对实际中解决多任务问题非常有用,通常可以用这个东西来判断一个人是单片机学习者,还是一个单片机工程师。这个必须掌握。由于网上介绍这个的帖子也不少,所以这里就不多说了。
第二个就是我今天想说的主题“分层屏蔽的设计思想”。下面用扫描键盘程序例子作为引子,引出今天说的东西。
问题的提出
单片机学习板一般为了简单起见,将按键分配的很好,例如整个&4*4&的键盘矩阵分配到&P1&口上面,8条控制线,刚好。这样的话程序也非常好写。只需要简单的
KEY_DAT&=&P1;
端口的数据就读进来了。
诚然,现实中没有这么好的事情。在实际的项目应用当中,单片机引脚的复用相当厉害,这跟那些所谓的单片机学习板就有很大的差别了。
另外一个原因,一般设计来说,是“软件配合硬件”的设计流程,简单点说就是,先确定好硬件原理图,硬件布线,最后才是软件的开发,因为硬件修改起来比较麻烦,相对来说软件修改的时候比较好改。这个就是中国传统的阴阳平衡哲学原理。硬件设计和软件设计本来就是鱼和熊掌的关系,两者不可兼得。方便了硬件设计,很可能给写软件带来很大的麻烦。反过来说,方便了软件设计,硬件设计也会相当的麻烦。如果硬件设计和软件设计同时方便了,那只有两种可能,一是这个设计方案非常简单,二是设计师已经达到了一个非常高的境界。我们不考虑那么多情况,单纯从常用的实际应用的角度来看问题。
硬件为了布线的方便,很多时候会可能将IO口分配到不同的端口上面,例如上面说的4*4键盘,8根线分别分配到&P0&P1&P2&P3&上面去了。那么,开发板的那些扫描键盘程序可以去见鬼了。怎么扫按键?我想起了我刚开始学习的时候,分成3段非常相似的程序,一个一个按键的扫描的经历......
或许有人不甘心,“那些东西我花了很长时间学习的,也用的好好的,怎么能说一句不用就不用?”虽然有点残忍,但是我还是想说“兄弟,接受现实吧,现实是残酷的......”
不过,人区别于低等动物的差别,是人会创造,在碰到困难的时候会想办法解决,于是我们开始了沉思......
最后我们引入初中数学学的“映射”的概念来解决问题。基本思想就是,将不同端口的按键映射到相同端口上面。
这样按键扫描程序就分成3个层次了。
1)最底层的是硬件层,完成端口扫描,20ms延时消抖,将端口的数据映射到一个KEY_DAT寄存器上面,KEY_DAT作为对上层驱动层的一个接口。
2)中间的一层是驱动层,驱动层只对&KEY_DAT&寄存器的数值进行操作。简单点说,我们无论底层的硬件是怎么接线的,在驱动层都不需要关心,只需要关心&KEY_DAT&这个寄存器的数值是什么就可以了。这样出来的间接效果就是“屏蔽了底层硬件的差异”,所以驱动层写的程序就可以通用了。
驱动层的另外一个功能是为了上层提供消息接口。我们用了类似window程序的消息的概念。这里可以提供一些按键消息,例如:按下消息,松开消息,长按键消息,长按键的时候的步进消息,等等。
3)应用层。这里就是根据项目的不同分别写按键功能程序,属于最上层的程序。它使用的是驱动层提供的消息接口。在应用层写程序的思想就是,我不管下层是怎么工作的,我只关心按键消息。有按键消息来的时候我就执行功能,没有消息来的时候,我就什么也不做。
下面用一个简单的常用的例子,说明我们这个设计思想的用法。
秒表调整时间的时候,要求按着某个按键不放,时间能连续的向上增加。这个东西很实用,实际的家电中用途很广泛。
在看下面的东西之前,大家可以想一下,这东西难吗?相信大家都会很响亮的回答,“不难!!”,然而我再问:“这东西麻烦吗?”我相信很多人肯定会说“很麻烦!!”&这不禁让我想起开始学单片机的时候写这种按键的那程序,乱七八糟的结构。如果不相信的话,可以自己用51写一下哦,那样就更加能体会本文说的分层结构的优越性。
项目要求:
两个按键,分别分配在P10&和P20,分别是“加”“减”按键,要求长按键的时候实现连续加和连续减的功能。
按键上拉,没有按键的时候高电平,有按键的时候低电平,另外,为了突出问题,这里没有将延时消抖的程序写上去,在实际项目中应该加上。C语言函数参数的传递多种多样,这里作为例子,用了最简单的全局变量来传递参数,当然你也可以用&unsigned&char&ReadPort(void)&返回一个读键结果,甚至还可以&void&ReadPort(unsigned&char&*pt)&用一个指针变量传递地址而达到直接修改变量的目的。方法是多种多样的,这个决定于每个人的程序风格。
1)开始写硬件层程序,完成映射
#define&KYE_MIN&0X01
#define&KEY_PLUS&0X01
unsigned&char&KeyD
void&ReadPort(void)
&&&&&&if&(P1&&&KEY_PLUS&==&0&){
&&&&&&&&&&KeyDat&|=&0x01&;
&&&&&&if&(P2&&&KEY_MIN&==&0&){
&&&&&&&&&&KeyDat&|=&0x02&;
&&&&&&}&&&&&&&&&&&&&&&&&
C语言应该很容易看懂吧?如果&KEY_PLUS&按下,P10口读到低电平,则&P1&&&KEY_PLUS&的结果为&0&,满足if&的条件,进入KeyDat&|=&0x01&是将&KeyDat&的bit0&置一,也就是说,将&KEY_PLUS&映射到&KeyDat&的&bit0
KEY_MIN&是同样的道理映射到&KeyDat&的&bit1
如果&KeyDat&的&bit0&为&1&,则说明&KEY_PLUS&按下,反则亦然。
不需要想的很神秘,映射就是这么一回事。如果还有其他按键的话,用同样办法,将他们全部映射到&KeyDat&上面。
2)驱动层程序编写
如果将&KeyDat想象成&P1&口,那么这个跟学习板那标准的扫描程序不就是一样了吗?对的,这个就是底层映射的目的了。
3)应用层程序编写
硬件层是必须分离出来,然而驱动层和应用层的要求就不那么严格了,事实上一些简单的项目没有必要将这两层分离开来,根据实际应用灵活应对就可以了。其实这样写程序是很方便移植的,根据板子的不同而适当的修改一下硬件层那个&ReadPort&函数就完成了,驱动层和应用层很多代码可以不经过修改直接用,很能提高开发效率的。当然这个按键程序会存在一定的问题,特别是遇到常闭按键和点触按键的混合使用的场合。这个留给大家自己去想了,反正问题总是能找到解决办法的,尽管方法有好有坏。
以按键为媒介,介绍了程序设计当中的“分层屏蔽”的思想的原理和应用,按键只是一个例子,其实分层的思想普遍存在着程序设计当中。细心留意一下的话发现其实window,linux,网络的tcp/ip&结构全部都是分层的。这东西不是绣花枕头,而是实际用在工程上面的,只是平时不多见帖子介绍,或者没有人特意这样来总结,又或者是有经验的工程师作为藏在心中的法宝吧,这个就不得而知。不过好东西应该共享,菜鸟应该共勉,一起来学飞吧。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。单片机 c语言 编程
单片机 c语言 编程
  作为嵌入式工程师,写一个效率高效,思路清晰的C语言程序是我们的终极目标,那么,怎么才能写好这样的程序呢?首先,我们要用C语言的思维方式来进行程序的构架构建;其次,要有良好的C语言算法基础,以此来实现程序的逻辑构架;最后,灵活运用C语言的指针操作。
  虽然看起来以上的说法很抽象,给人如坠雾里的感觉,其实就是用C语言进行遇到问题,分析问题和解决问题的过程。那么,下文将给你介绍如何耍这“三板斧”。
  嵌入式工程师在编写C语言程序的时候,要针对遇到的问题进行程序构架构建。比如我
  单键,就是每个按键占用一个单片机的管脚,这种接法的特点是电路和程序都很简单,缺点是占用单片机的管脚多、消耗硬件资源大。这种接法一般适合于 6个或不多于6个按键。
  单键电路的电路图见图1,由图可以看出,每一个按键的一端都直接连有一个8255的PC端口的一个管脚作为输入管脚,并且这个端口管脚只连有一个按键,这样的接法就是单键接法。单键接法要求按键的一端接有一个上拉电阻,而按键的另一端直接接地,这样可以在按键没有合上的时候保持输入管脚始终是高电平。如果程序检测到这个管脚为高电平,就会认为该管脚的按键没
  贝能国际有限公司近日宣布,根据Microchip公司最新度代理商大会发布的报告,贝能国际以高速成长的市场表现从&中国区第一代理&跃居至&远东区第一代理&宝座。这一成绩充分印证贝能国际致力推动Microchip全线产品所做出的坚定承诺和创新努力。
  Microchip作为全球领先的整合单片机、混合信号、模拟器件和闪存专利解决方案的供应商,为全球数以千计的消费类产品提供低风险的产品开发、更低的系统总成本和更快的上市时间。贝能国际自2001年与Microc
本文基于Micrel公司推出的3端口10/100M交换芯片KSZ8873,充分利用其价格低廉、配置方便、应用多样等特点,结合PIC32系列单片机,提出并设计出一种RS485/RS232接口转双网口的模块,并且软件实现了将Modbus-RTU协议与Modbus-TCP、IEC104协议的转换。该模块成功应用于光伏并网逆变器中,双网口设计在组网时采用菊花链方式,可节省了布线成本50%以上,同时还具有性能稳定、独立性强、维护方便等优点。
&&&&&&&&&&&&
基于有线电话接口的温湿度记录仪,能够通过电话拨号方式实现远程温湿度报警和查询。本文介绍了电话接口温湿度记录仪的总体设计及其工作过程,详细阐述了系统硬件电路设计及软件设计。整个系统具有结构简单、可靠性高、使用灵活方便的特点,具有广阔的应用前景。
为解决库区温度测量布线难度大、材料成本高、维护检修难的问题,论文提出了一种用单片机作为控制核心,用DS18B20搭建多点测温网络,nRF2401作为传输器件的库区温度数据无线传输系统。经实际测试,该系统测量准确度高、传输距离远、性能可靠,具有较好的应用前景。
&&&&&&&&&&
室内温湿度及颗粒物浓度是人们日常生活中密切关注的空气指标,系统通过DHT11温湿度传感器采集室内的温湿度信号,再通过GP2Y1010可吸入肺颗粒物浓度检测传感器进行室内空气质量的数值检测,如果PM2.5值超出上限将报警。
在32位单片机盛行的今天,探讨8位单片机市场是否还有发展前途的文章很多。本文走访了8位单片机销售额最大的厂商——Microchip,了解到8位单片机的技术市场及该公司的发展策略。
  对电磁干扰的设计我们主要从硬件和软件方面进行设计处理,下面就是从单片机的PCB设计到软件处理方面来介绍对电磁兼容性的处理。
  一、影响EMC的因数
  1.电压
  电源电压越高,意味着电压振幅越大,发射就更多,而低电源电压影响敏感度。
  2.频率
  高频产生更多的发射,周期性信号产生更多的发射。在高频单片机系统中,当器件开关时产生电流尖峰信号;在模拟系统中,当负载电流变化时产生电流尖峰信号。
  3.接地
  在所有EMC题目中,主要题目是不适当的接地引起的。有三种信号接地方法:
  全球领先的整合单片机、混合信号、模拟器件和闪存专利解决方案的供应商&&Microchip Technology Inc.(美国微芯科技公司)举办的大中国区技术精英年会(Greater China MASTERs Conference),现已开始接受报名。今年的会议将于11月11-12日、11月18-20日、11月23-25日和12月2-3日分别在台北、东莞、杭州和高雄举行。请访问:/masters,了解此次年会的更多信息并在线报名
  下面贴出LED闪灯的源码,并逐语句进行讲解。
  #include &p30f6014A.h& //包含头文件
  _FOSC(CSW_FSCM_OFF & XT_PLL16); //配置时钟
  _FWDT(WDT_OFF); //关闭看门狗
  假设使用的外部晶振为5Mhz,系统指令周期的计算方法为:
  5M*16/4=20MIPS
  16为16倍频,每执行一条指令要4个时钟周期,因此要除四,就得到了实际的系统时钟。
  IO端口的配置
  可能很多网友奇怪,在数字芯片高速发展的今天,32位单片机价格低廉,功能强大,芯片成本已经不是产品开发的主要问题,那为什么还要普及PIC单片机,这样一款中低端的单片机呢?原因很简单,既然现在还没有被淘汰的,总有它存在的理由,PIC单片机号称稳定性极好,可以在十分恶劣的环境下稳定工作,因此在工业领域受到工程师们的偏爱,而且目前来看,任何一个系列的单片机都在不断的推陈出新,产品性能也在不断的提升,PIC单片机也一样,高端的PIC单片机也有32位的,主频高达上百兆,详细介绍大家可以去官网查看。
  促使我写
  日前,市调机构IC Insights的报告指出,借助物联网相关新产品的开发,微控制器销量有了略微增加,但却遭遇到罕见的价格大幅下滑。
  根据IC Insight的报告,单片机年出货量增长33%,达到了254亿颗,总收入仅增长4%至166亿美元。
  IC Insights分析师Rob Lineback表示,单价下滑主要原因是32位市场的竞争激烈,供货商企图通过价格战的方式快速进军物联网市场。
  Lineback称&物联网的传感器及通信功能的总成本要控制在3/4美元之间,因此对供应
  最近一直在学习单片机C语言,自从看了电影“超能查派”后,就一直想仿制一个里面的那个USB密钥,所以最近研究了下,做出了这么一个东西,经过本作品学到了不少东西
  所用单片机:AT89C51 下载方式:AVR_ISP
  做本作品的用意是来学习I2C通讯,所以程序方面,在网上找了许多类似功能的程序,然后尝试删减修改其功能,比较不同来学习,最终终于实现了想要的功能,也算对I2C有了初步的了解。
  采用24C08储存密码,然后采用单片机进行读取,对比密码是否符合,考虑到美观问
  1、开关电源电路的设计
  系统中的开关电源电路为蓄电池的充电提供稳定的电压采用的是反激式的开关电源电路。反激式开关电源的电路比较简单,比正激式开关电源少用了一个大的储能滤波电感,以及一个续流二极管,因此,反激式开关电源的体积要比正激式开关电源的体积小,且成本也要低。此外,反激式开关电源输出电压受占空比的调制幅度,相对于正激式开关电源来要高很多,因此,反激式开关电源要求调控占空比的误差信号幅度要比较低,误差信号放大器的增益和动态范围也要较小。基于这些优点,反激式开关电源在目前家电领域中被广泛的应用。
单片机 c语言 编程 介绍
您好,目前还没有人创建词条单片机 c语言 编程 !
欢迎您创建该词条,阐述对单片机 c语言 编程 的理解,并与今后在此搜索单片机 c语言 编程 的朋友们分享。&&&&
单片机 c语言 编程 电路
单片机 c语言 编程 相关帖子
单片机 c语言 编程 资料下载
Copyright (C) ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
《电子产品世界》杂志社 版权所有 北京东晓国际技术信息咨询有限公司
京ICP备号-2 北京市公安局备案:&&&&京公网安备73

我要回帖

更多关于 单片机c语言编程 的文章

 

随机推荐