barriers / 阅读 / 详情

怎样提升自己单片机C语言编程能力啊?求高手指点迷津!我硬件也懂一点 但我想朝编程方面发展 跪求高手指教

2023-10-05 11:16:45
共7条回复
皮皮

到楼主描述的这种程度,比较实际的只有两种方法:一是实践,实际做一个较大的项目,二是多看看网上的一些好的范例,哪怕是你做过的项目,重点不是看其所实现的功能,而是看其源程序的特点和结构!个别的可以关注一下算法。还有一种方法,学一些软件专业的必修基础课,了解软件编程的思维模式,这可能要搭些功夫,而且影响是潜移默化的,如果不是搞纯软件的话,个人观点可以不学。

C语言编程能力并不完全体现在代码的编写效率和执行效率高。注意:是不完全,这方面的提升与个人的逻辑思维能力和其它知识水平有关。举个例子:假如让你编制一个函数实现求arctan反三角函数的值,你会怎么做?如果你不知道采用级数展开的方法就无从下手。其实这考验的是你的数学水平。所以这方面的提高是综合性的,无法具体而谈。

可以提升的我认为体现在如下几个方面,这几方面做好了,同样也可以说具备相当的编程能力了。

1、软件版本管理:任何软件,每次修改发布后必须更新软件版本号,这点工作后尤其关键,我见过这方面不认真的,别多了,3、4个版本后就焦头烂额。

2、源程序中多些注释:比如函数的功能描述、入口参数说明、返回值说明、调用的要求、完成日期等。另外,关键算法的说明也应该注释。常言道:好记忆不如烂笔头,不能太过相信自己的智商。

3、工程化管理源程序:比如对一些常数、接口地址、数据类型定义(typedef)、数据结构定义、自定义的函数声明等,应写入单独建立.H文件,然后在其它.C文件中包含。.C文件,如果软件大的话也尽量的按照功能分别建立,然后在工程中包含。

4、有时,一个软件会针对不同型号的设备,此时应采用#ifdef等编译控制语句加以区分;而且,为方便调试,有时需要对一些状态或变量赋与初值,而正式版本中不能要,也可以采用这种方法,便于管理,不易出错。这部分内容应放在前面所说的.H文件中。

5、尽量多使用函数,这样模块化强,也能通过函数名看出函数功能,易于代码阅读。最简单的例子就是初学者常用的Delay()。不过也别太过了,A=B+C就没必要了。

6、对一些常数、地址,最好使用#define通过英文字符来代替,将其放在.H文件中,这样万一有变化,只需改一处即可,方便,又不会遗漏。比如定时器重装值:

#define C_TH0_50MS (65536-50000)/256

如果需要改晶振,只需改此处即可。

以上注重的是整个软件方面,下面说一些具体需要注意的,不成系统,也没整理过,想到那说到哪吧。基本上是些规范,规范同样代表着水平:

1、多分枝逻辑判断类语句:应养成将所有判断情况都写出来、不用的注掉的习惯,这类语句包括if、switch,举例

if(i==4)

{....}

//else if i>4

//else i<4

其中else的两部份不用,那也写出来,注掉。这样帮助你保证程序的严密型,也有助于问题排查

2、常数、变量、函数、端口等的命名:(不要出现全局变量名与局部变量名相同的情况,虽然在C里允许这样做)我个人采用如下规则

全局变量:类型+具有实际意义的词组或拼音,其中词组或拼音中每个字首字母应大写。

例如: iSecondCount:一个int类型的秒计数变量

局部变量:全小写字符,循环计数变量可以采用诸如i、j、k、n之类的无意义字符。最好不用

a、b、c之类的16进制数所使用的字符。

端口:全大写,并使用具有实际意义的词组或拼音,使用_作为分割符。如KEY_COM

常数:前面加“C_”,后面每个单词之间最好也加“_”,如上例中的C_TH0_50MS

函数:类似于全局变量,只是前面不加类型说明符。如Timer0、Delay、DelayMs。

3、源程序中的注释符尽量不使用/* */,而使用//,这样如果要临时注掉大块程序时,使用一次/* */就可以了,否则可能需要修改多处,麻烦。

4、格式上,注意缩进,尤其是多级判断。而且执行体既便只有一句,有些地方也尽量不要忽略大括号,举例:

if(a>4)

{

a++;

}

else

{

a=0;

}

5、..............还有很多,一下想不起来。你可以自己体会,自己制定。

能力的体现方式有很多,比如说求职是否能如愿。看人看细节,如果编程时养成了上述的习惯,不管你的实际水平如何,都说明了你的处事态度,在大家的智商水平差不多的前提下,无论于公于私,如果我是老板的话会选择你,放心的把任务交给你去做。

你先试试吧,说起来容易,做起来难,我自己的规则,我的执行度也就达到70%水平吧。

慧慧

买个开发板 多练习

小教板

多做具体项目,在实践中学习,多思考。

想做好研发,没有几年的功力是不行的,要有耐心和持续不断的努力。

祝你成功。

余辉

要想在“嵌入式系统”行业有好的发展,几点是必须的:

1,先从汇编开始学习,汇编相比C语言更接近与CPU,但是汇编再一些大型的系统里面需要付出很大的开销,所以又不如C语言实用,所以做大型系统还是要用C语言!

2,要提高编程能力,好好学习C语言吧,最好把计算机2级考试过了!这也便于找工作,当然你能把计算机2级过了,你的C语言编程也就很好了!

3,学习嵌入式系统首先应该从简单的“单片机”开始比如 51 内核 89C51 ,其他复杂“单片机”如 avr 内核 atmega 系列,51 内核 STC 系列 ,如果 51 ,avr 都弄懂弄透了的话,就向 arm 上学习吧,推荐一款 arm 芯片 M058、M0516!其价格相当于8位CPU的价格,功能常用的都有,还是不错的选择!

4,看一些“单片机”资料,买一套适合自己的开发板,提高自己的能力!

如果你需要单片机的资料的话我可以发给你一些!

LocCloud

想要快速提高编程水平的话要经常多看些复杂的程序,然后学习别人的编程思路技巧,然后在此基础上思考一下有没有可以改进的地方,,然后再有就是自己多编写程序,写好之后,一定要优化程序,多改几次,直到,程序很有模块感,很容易让别人理解为佳!当然最重要的还是坚持,时间久了,你自己就有自己的编程风格了。切记刚开始一定要看些好的程序比如潭浩强的等等..

S笔记

我也是跟你一样啊。。。一头雾水!我现在的做法是从网络上找例子,然后先自己试着编写,不会的话参考答案,还有就是我现在总是先把问题分解了,把实例分节为一块一块,比如C语言的函数似的,最后综合到一起,还有就是我用的是硬件仿真+软件仿真,平时研究的时候,主要是软件仿真,用的是proteus,这样有助于理解内部结构!你一定比我厉害啦,我才学了不到两周,还是自学,希望以后多多交流,你把51内部都弄懂了,我还啥都不知道呢!!!希望加你好友,多多交流!我的QQ:577625246!

CarieVinne

找资料,看人家的例程啦

相关推荐

单片机用什么语言编程

单片机用以下语言可以编程:1、C语言。单片机C语言是一种编译语言,具有编译语言的特点。C语言具有功能丰富的库函数、计算速度快、编译效率高、可移植性好,可直接控制系统。此外,C语言程序具有完整的程序模块结构,为软件开发中模块化程序设计方法的使用提供了有力的保证。2、汇编语言。它的主要优点是占用资源少,程序执行效率高。因为它有一个指令,所以每个指令都很清晰,堆叠和调整都很容易控制,调试也很方便。但是不同类型的单片机可能有不同的编码语言,所以不容易移植。3、PL/M编程语言。P/M是一种具有L/M语言的高级语言,不仅具有L/M语言的高级汇编,而且直接利用CPU的硬件特性进行编程。因此,与其他高级语言相比,它具有更多的功能和更广泛的应用,尤其是在16台单片机的应用领域。4、BASIC编程语言。BASIC是一种高级语言,其英文意思是初学者通用符号代码。在过去的几十年里,BASIC语言被认为是初学者编程的语言,已经从QBASIC发展到很多版本,有很多结构化的思维和编程方法,比如函数、模块、局部变量、全局变量、数据传输等。使用单片机语言的注意事项。1、单片机编程的特点对单片机编程来说,首先要考虑的是单片机的程序空间和数据空间都是有限的,所以要让程序尽量短小精悍,以节省程序占用的存储空间。2、单片机编程的一个主要对象是对单片机的端口和内部寄存器的操作和配置,这个需要比较精确的时序控制。3、单片机算法运算中,尽量使用加法、减法、移位运算,因为乘法和除法运算会非常费时间,尤其是除法,会耗费很多时间,这对于速度本身就有限制的单片机来说,是一个很大的负担。4、高级语言编写单片机程序的缺陷高级语言可以实现更为优化的算法,更为方便的执行方案,但是,高级语言对程序存储空间的占用要比汇编和C语言多很多。这是最致命的一点,单片机有限的存储空间需要靠精打细算来设计程序,根本经不起高级语言臃肿的代码体积。
2023-09-11 21:27:181

单片机编程用什么语言

摘要:单片机编程是学习单片机的一个重要部分,编程关系到单片机能否正常运行,一般情况下,单片机的程序是用C语言编写的,不过不是传统C语言,而是变种后的C51语言;此外,启动部分、一些要求时效性特别强的部分会用汇编语言编程。学习单片机编程的时候,先要模仿例题,然后试着自己写,熟练了再看别人的编程进行改进。下面一起来了解一下单片机编程用什么语言吧。一、单片机编程用什么语言单片机编程是指编写单片机运行的程序,一般来说,对于刚刚入门学习单片机的朋友来说,学习单片机的编程是很重要的,那么单片机用什么语言编程呢?1、C语言大多数情况下,单片机运行的程序,都是C语言编写的。不过并不是纯粹的传统C语言,而是变种后的C51语言。单片机C51语言是由C语言继承而来的。和C语言不同的是,C51语言运行于单片机平台,而C语言则运行于普通的桌面平台。C51语言具有C语言结构清晰的优点,便于学习,同时具有汇编语言的硬件操作能力。对于具有C语言编程基础的工程师,能够轻松地掌握单片机C51语言的程序设计。2、汇编语言汇编语言是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,也称为符号语言。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。在一些情况下,C51并不能完美的实现功能,所以汇编语言是对C51的一个重要补充。一般来说,启动部分(基础硬件的初始化),往往是由汇编语言完成的。除此以外,一些要求时效性特别强,效率要求特别高时,也需要使用汇编语言完成。二、怎么学好单片机编程单片机的编程并不简单,一个完整程序的形成需要有C语言知识以及编程逻辑,编程逻辑决定一个程序是否优秀,是单片机编程一个很重要的问题,只有通过多阅读大神的优秀代码和多动手编写的时候才能一点一点的积累。在学习单片机编程的过程中,按照以下过程学习,效果会更好:1、作为一个初学者,我们就如同一个婴儿一样,我们的第一个能力就是模仿。通过例题的模仿,先熟悉C语言的编写和编辑器的使用。2、然后尝试着不看案例自己写,多写几次找出自己的不足,再通过看书补足。3、最后我们再试着去修改程序,最简单的就是从左到右变成从右到左。最后去阅读一些优质的代码,研究人家的编程思路,找出自己思路的差异多想一下为什么;领会其中每一条语句的作用;对有疑问的地方试着按照自己的思路修改程序,运行别人的程序和自己修改的程序有何不同,领会其中的奥妙。在学会单片机的编程后,多去看看企业制作产品的标准,自己去动手做,多做项目累积经验,熟能生巧。
2023-09-11 21:27:411

51单片机c语言编程?

对端口输出操作,直接适用赋值语句即可。 比如 P1 = 0x03;对端口读取操作,直接赋值给局部变量即可。对数码管操作,需要先定义 对应的 码表, Tab[16] = {, }分别对应 0~F 的端口输出值、点亮相应的LED位; 然后直接 操作端口输出对应字符即可,比如P1=Tab[3] 数码管输出显示3
2023-09-11 21:29:281

用c语言编程实现C8051F300单片机1s定时,50Hz的方波输出

#include sbit wave=P1^0;void SetupTimer0(){ TMOD &= 0XF0; //仅保留T1信息 TMOD |= 0X02; //设置T0: 定时功能,方式2,自动重载8位定时器/计数器 TH0 = 256-250;//定时每0.25ms中断一次 TL0 = 256-250; TR0 = 1; //开启定时器 ET0 = 1; //定时器0中断打开}data unsigned char us250;data unsigned int ms;bit WAVE; //用以记住当前wave的状态void Timer0_ISR() interrupt 1 //定时中断服务程序,为按键消抖服务{if (++us250<4) return; us250=0; ++ms;if (ms<10) return;//每10ms波形变化一次,20ms完成一个波形,所以波形是50Hz的ms=0; WAVE=~WAVE; wave=WAVE; //方波输出}void main(){ us250=ms=0;wave=WAVE=0;SetupTimer0(); EA = 1; //全局中断打开while(1); //在中断函数中实现方波输出}
2023-09-11 21:30:381

单片机告诉一个地址,怎样用C语言编程读取地址处的值???

4X4键盘还有物理地址?你是怎么得到这个物理地址的呢?-待续-
2023-09-11 21:30:512

单片机C语言编程

这个不难实现,利用独立按键和流水灯的知识可以做的。试试看。
2023-09-11 21:31:024

单片机,C语言编程问题?

应该是判别条件的范围有问题,有情况没有包含或者漏洞。
2023-09-11 21:32:032

单片机C语言编程问题

whlie(A[2]==A)A是数组, ‘A[2]==A"明显语法错误。还有既然‘A[2]==A"才能执行while里的语句那‘if(A[2]==B) 。。。"又有什么意义?Keil 4中机型选择是有AT89C52的
2023-09-11 21:32:123

C语言版51单片机编程问题?

你所说的“没有什么联系、各自独立运行”颇令人费解。既然如此,传感器检测的数值有什么用?传给上位机?LED以及步进电机在什么条件下动作?由上位机控制?如果是这样,就做成单纯的串口驱动型应用就可以了。
2023-09-11 21:32:272

哪些单片机支持c语言编程?

C51, C52, ARM,STM32,AVR,DSP,FPGA等
2023-09-11 21:33:102

单片机c语言编程软件有哪些?

windows下首选VS,版本至少vs2005以上,或者用最新的VSCode,不过需要自己配插件,好处是免费,如果做单片机c开发首选eclipse,linux下如果做单片机首选eclipse,其次是clion。eclipse兼容性最好,不过稳定性差一些,vs在win下没有对手,clion用cmake,相比来说大部分c程序用的都是makefile,需要适应一下。Devc++:这个IDE是windows环境下的,操作简单,功能也不弱,适合新手使用。Codeblocks(强力推荐):功能比较强大的c/c++IDE,有着不错的智能提示。拓展资料C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSIC,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、TurboC等。编译器GCC,GNU组织开发的开源免费的编译器MinGW,Windows操作系统下的GCCClang,开源的BSD协议的基于LLVM的编译器VisualC++::cl.exe,MicrosoftVC++自带的编译器集成开发环境CodeBlocks,开源免费的C/C++IDECodeLite,开源、跨平台的C/C++集成开发环境OrwellDev-C++,可移植的C/C++IDEC-FreeLightTableVisualStudio系列HelloWorld
2023-09-11 21:33:521

单片机c语言编了个流水灯,用按键怎么实现它暂停。

可以用定时器设置流水灯的时间间隔,按键控制定时器开关
2023-09-11 21:34:043

char有符号型型变量全称为signedchar一般缩写为char范围是-128~127uchar在C语言中不存在,会出现语法错误。unsignedchar是无符号型变量范围是0~255但大家为了书写简单,大家都做如下定义:这时候Uchar或uchar就可以当无符号型字符变量使用了typedefunsignedcharUchar;typedefunsignedcharuchar;
2023-09-11 21:34:221

单片机c语言编程100个实例

51单片机C语言编程实例 基础知识:51单片机编程基础 单片机的外部结构: 1. DIP40双列直插; 2. P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平) 3. 电源VCC(PIN40)和地线GND(PIN20); 4. 高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位) 5. 内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍) 6. 程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序) 7. P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务) 1. 四个8位通用I/O端口,对应引脚P0、P1、P2和P3; 2. 两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3. 一个串行通信接口;(SCON,SBUF) 4. 一个中断控制器;(IE,IP) 针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。 C语言编程基础: 1. 十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。 2. 如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。 3. ++var表示对变量var先增一;var—表示对变量后减一。 4. x |= 0x0f;表示为 x = x | 0x0f; 5. TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。 6. While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;} 在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P1.3 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P1_3 = 1; //给P1_3赋值1,引脚P1.3就能输出高电平VCC 5. While( 1 ); //死循环,相当 LOOP: goto LOOP; 6. } 注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。 在某引脚输出低电平的编程方法:(比如P2.7引脚) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P2.7 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P2_7 = 0; //给P2_7赋值0,引脚P2.7就能输出低电平GND 5. While( 1 ); //死循环,相当 LOOP: goto LOOP; 6. } 在某引脚输出方波编程方法:(比如P3.1引脚) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P3.1 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 5. { 6. P3_1 = 1; //给P3_1赋值1,引脚P3.1就能输出高电平VCC 7. P3_1 = 0; //给P3_1赋值0,引脚P3.1就能输出低电平GND 8. } //由于一直为真,所以不断输出高、低、高、低……,从而形成方波 9. } 将某引脚的输入电平取反后,从另一个引脚输出:( 比如 P0.4 = NOT( P1.1) ) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P0.4和P1.1 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P1_1 = 1; //初始化。P1.1作为输入,必须输出高电平 5. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 6. { 7. if( P1_1 == 1 ) //读取P1.1,就是认为P1.1为输入,如果P1.1输入高电平VCC 8. { P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND 2 51单片机C语言编程实例 9. else //否则P1.1输入为低电平GND 10. //{ P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND 11. { P0_4 = 1; } //给P0_4赋值1,引脚P0.4就能输出高电平VCC 12. } //由于一直为真,所以不断根据P1.1的输入情况,改变P0.4的输出电平 13. } 将某端口8个引脚输入电平,低四位取反后,从另一个端口8个引脚输出:( 比如 P2 = NOT( P3 ) ) 代码 1. #include <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P2和P3 2. void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 3. { 4. P3 = 0xff; //初始化。P3作为输入,必须输出高电平,同时给P3口的8个引脚输出高电平 5. While( 1 ) //非零表示真,如果为真则执行下面循环体的语句 6. { //取反的方法是异或1,而不取反的方法则是异或0 7. P2 = P3^0x0f //读取P3,就是认为P3为输入,低四位异或者1,即取反,然后输出 8. } //由于一直为真,所以不断将P3取反输出到P2 9. } 注意:一个字节的8位D7、D6至D0,分别输出到P3.7、P3.6至P3.0,比如P3=0x0f,则P3.7、P3.6、P3.5、P3.4四个引脚都输出低电平,而P3.3、P3.2、P3.1、P3.0四个引脚都输出高电平。同样,输入一个端口P2,即是将P2.7、P2.6至P2.0,读入到一个字节的8位D7、D6至D0。 第一节:单数码管按键显示 单片机最小系统的硬件原理接线图: 1. 接电源:VCC(PIN40)、GND(PIN20)。加接退耦电容0.1uF 2. 接晶体:X1(PIN18)、X2(PIN19)。注意标出晶体频率(选用12MHz),还有辅助电容30pF 3. 接复位:RES(PIN9)。接上电复位电路,以及手动复位电路,分析复位工作原理 4. 接配置:EA(PIN31)。说明原因。 发光二极的控制:单片机I/O输出 将一发光二极管LED的正极(阳极)接P1.1,LED的负极(阴极)接地GND。只要P1.1输出高电平VCC,LED就正向导通(导通时LED上的压降大于1V),有电流流过LED,至发LED发亮。实际上由于P1.1高电平输出电阻为10K,起到输出限流的作用,所以流过LED的电流小于(5V-1V)/10K = 0.4mA。只要P1.1输出低电平GND,实际小于0.3V,LED就不能导通,结果LED不亮。 开关双键的输入:输入先输出高 一个按键KEY_ON接在P1.6与GND之间,另一个按键KEY_OFF接P1.7与GND之间,按KEY_ON后LED亮,按KEY_OFF后LED灭。同时按下LED半亮,LED保持后松开键的状态,即ON亮OFF灭。 代码 1. #include <at89x52.h> 2. #define LED P1^1 //用符号LED代替P1_1 3. #define KEY_ON P1^6 //用符号KEY_ON代替P1_6 4. #define KEY_OFF P1^7 //用符号KEY_OFF代替P1_7 5. void main( void ) //单片机复位后的执行入口,void表示空,无输入参数,无返回值 6. { 7. KEY_ON = 1; //作为输入,首先输出高,接下KEY_ON,P1.6则接地为0,否则输入为1 8. KEY_OFF = 1; //作为输入,首先输出高,接下KEY_OFF,P1.7则接地为0,否则输入为1 9. While( 1 ) //永远为真,所以永远循环执行如下括号内所有语句 10. { 11. if( KEY_ON==0 ) LED=1; //是KEY_ON接下,所示P1.1输出高,LED亮 12. if( KEY_OFF==0 ) LED=0; //是KEY_OFF接下,所示P1.1输出低,LED灭 13. } //松开键后,都不给LED赋值,所以LED保持最后按键状态。 14. //同时按下时,LED不断亮灭,各占一半时间,交替频率很快,由于人眼惯性,看上去为半亮态 15. } 数码管的接法和驱动原理 一支七段数码管实际由8个发光二极管构成,其中7个组形构成数字8的七段笔画,所以称为七段数码管,而余下的1个发光二极管作为小数点。作为习惯,分别给8个发光二极管标上记号:a,b,c,d,e,f,g,h。对应8的顶上一画,按顺时针方向排,中间一画为g,小数点为h。 我们通常又将各二极与一个字节的8位对应,a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相应8个发光二极管正好与单片机一个端口Pn的8个引脚连接,这样单片机就可以通过引脚输出高低电平控制8个发光二极的亮与灭,从而显示各种数字和符号;对应字节,引脚接法为:a(Pn.0),b(Pn.1),c(Pn.2),d(Pn.3),e(Pn.4),f(Pn.5),g(Pn.6),h(Pn.7)。 如果将8个发光二极管的负极(阴极)内接在一起,作为数码管的一个引脚,这种数码管则被称为共阴数码管,共同的引脚则称为共阴极,8个正极则为段极。否则,如果是将正极(阳极)内接在一起引出的,则称为共阳数码管,共同的引脚则称为共阳极,8个负极则为段极。 以单支共阴数码管为例,可将段极接到某端口Pn,共阴极接GND,则可编写出对应十六进制码的七段码表字节数据
2023-09-11 21:34:341

单片机编程时出现undefined identifier是什么意思? 大哥们教教我吧!

undefined identifier是未定义的标志符,在程序内使用了没有被定义的标志符或者变量。具体解决办法:找到未定义的标志符,对其进行赋值即可。定义的是unsigned char num,在使用的时候,写成了NUM,也会出现同样的错误p1,undefined identifier:英文意思就是p1未定义,找不到p1编译出错。扩展资料:C语言单片机编程:单片机软件设计使用C语言作为编程开发软件,采用模块化的程序结构。设计了按键模块程序、RFID模块程序、日历时钟模块程序、GPRS模块程序、显示存储模块程序等,并编写系统主程序,将五个程序模块组合在一起,实现单片机控制系统的整体功能。51单片机支持三种高级语言,即PL/M,C和BASIC。C语言是一种通用的程序设计语言,其代码率高,数据类型及运算符丰富,并具有良好的程序结构,适用于各种应用的程序设计,是使用较广的单片机编程语言。单片机的C语言采用C51编译器(简称C51)。有C51产生的目标代码短,运行速度高,所需存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言或PL/M51语言目标代码混合使用 。参考资料来源:百度百科-单片机C语言编程参考资料来源:百度百科-单片机编程器
2023-09-11 21:34:451

单片机制作呼吸灯的C语言程序怎样编写

用pwm脉冲
2023-09-11 21:35:1510

AT89S51单片机c语言程序的编程1

在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚)#i nclude <AT89x52.h> //该头文档中有单片机内部资源的符号化定义,其中包含P1.3{P1_3 = 1; //给P1_3赋值1,引脚P1.3就能输出高电平VCCWhile( 1 ); //死循环,相当 LOOP: goto LOOP;}注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。
2023-09-11 21:36:041

学习单片机c语言编程,需不需要学习一下数据结构之类的。

刚学就学的简单的,等到你简单的学会了在学难的 吧。
2023-09-11 21:36:234

单片机C语言编程问题

进入中断先关中断,退出中断处理时要清中断标志位。
2023-09-11 21:36:311

求大神用C语言编写单片机程序!!

太专业了,我是纯软的,单片机不明白
2023-09-11 21:36:552

单片机p1, undefined identifier什么情况啊?

undefined identifier是未定义的标志符,在程序内使用了没有被定义的标志符或者变量。具体解决办法:找到未定义的标志符,对其进行赋值即可。定义的是unsigned char num,在使用的时候,写成了NUM,也会出现同样的错误p1,undefined identifier:英文意思就是p1未定义,找不到p1编译出错。扩展资料:C语言单片机编程:单片机软件设计使用C语言作为编程开发软件,采用模块化的程序结构。设计了按键模块程序、RFID模块程序、日历时钟模块程序、GPRS模块程序、显示存储模块程序等,并编写系统主程序,将五个程序模块组合在一起,实现单片机控制系统的整体功能。51单片机支持三种高级语言,即PL/M,C和BASIC。C语言是一种通用的程序设计语言,其代码率高,数据类型及运算符丰富,并具有良好的程序结构,适用于各种应用的程序设计,是使用较广的单片机编程语言。单片机的C语言采用C51编译器(简称C51)。有C51产生的目标代码短,运行速度高,所需存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言或PL/M51语言目标代码混合使用 。参考资料来源:百度百科-单片机C语言编程参考资料来源:百度百科-单片机编程器
2023-09-11 21:37:031

单片机编程(C语言)问题

uchar num; 到0后-1溢出了,成FF了,无符号数为255
2023-09-11 21:37:172

求用C语言编程实现51单片机的LED灯移动

移动,不循环?没有时间要求?
2023-09-11 21:37:384

51单片机C语言对流水灯编程,用定时中断做

把具体要求说清楚后,我才好把按照要求写的程序贴出来
2023-09-11 21:37:474

单片机编程问题(C语言),很入门的问题,明天比赛,急急急!多少分都可以

还没学单片机!无法回答!
2023-09-11 21:38:105

单片机流水灯的C语言编程

这种题目就是向特定端口写值,1亮灯,0灭,如此而已。主要的测试点是结合特定的单片机,将程序的入口点连接成单片机初始化的入口地址。
2023-09-11 21:38:304

单片机用c语言编程,使led灯管从中间开始两个灯向两边循环闪烁

用一个数组就行了
2023-09-11 21:39:002

程序中undefined identifier是什么意思?

undefined identifier是未定义的标志符,在程序内使用了没有被定义的标志符或者变量。具体解决办法:找到未定义的标志符,对其进行赋值即可。定义的是unsigned char num,在使用的时候,写成了NUM,也会出现同样的错误p1,undefined identifier:英文意思就是p1未定义,找不到p1编译出错。扩展资料:C语言单片机编程:单片机软件设计使用C语言作为编程开发软件,采用模块化的程序结构。设计了按键模块程序、RFID模块程序、日历时钟模块程序、GPRS模块程序、显示存储模块程序等,并编写系统主程序,将五个程序模块组合在一起,实现单片机控制系统的整体功能。51单片机支持三种高级语言,即PL/M,C和BASIC。C语言是一种通用的程序设计语言,其代码率高,数据类型及运算符丰富,并具有良好的程序结构,适用于各种应用的程序设计,是使用较广的单片机编程语言。单片机的C语言采用C51编译器(简称C51)。有C51产生的目标代码短,运行速度高,所需存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言或PL/M51语言目标代码混合使用 。参考资料来源:百度百科-单片机C语言编程参考资料来源:百度百科-单片机编程器
2023-09-11 21:39:081

求51单片机C语言编程大神帮忙

如何才能将所有要实现的功能把他做成一个程序
2023-09-11 21:39:252

单片机的C语言程序设计

不应该说单片机是否支持C语言,目前任何计算机都不直接支持C语言。而应该说某个单片机的开发环境是否支持C语言。就目前来说,几乎所有的单片都有支持C语言的开发环境。用的最多的应该是KEIL,既支持51单片机,也支持ARM的C语言开发。另外TI的CCS支持430的C语言开发。其他的就不一一列举了
2023-09-11 21:39:361

c语言编程c51单片机

#include <reg51.h>#define uchar unsigned char#define uint unsigned intmain(){ uint xdata *xp;//定义指向片外RAM的指针 uint data *p;//定义指向片内RAM的指针 uchar i;//定义循环变量 xp=0x100;//指向片外RAM的100H单元 p=0x30;//指向片内RAM的30H单元 for(i=0;i<10;i++){//循环10次 *p=*xp;//将片外RAM单元中的内容传送给片内RAM单元 xp++;//指向下一个片外RAM单元地址 p++;//指向下一个片内RAM单元地址 }}
2023-09-11 21:39:491

如何用c语言编程在单片机上做交通信号灯

看名字
2023-09-11 21:40:482

如何提高单片机C语言编程能力?

多学习单片机的基础知识,多动手制作单片机电路板,多编写单片机程序。www.dzkfw.com.cn/myxin/51c_language.chm 单片机c语言编程资料
2023-09-11 21:41:085

C语言高手进、单片机编程、

void display(); //显示函数申明改成 void display(int x); //显示函数申明
2023-09-11 21:41:272

单片机串口通信C语言编程问题

首先你应该先确认STC(死得惨)的串口波特率是否与电脑的波特率一致,RS-232连接是否正确。另外一个字符应该是‘t",而不是“t”吧?
2023-09-11 21:41:362

51单片机,stm32,arduino都是用什么语言进行编程的?

51单片机,STM32单片机用汇编或者C语言,现在基本都用C语言编程,Arduino有自己的编程环境,用户也是用C语言编程。51单片机的编程51单片机进入中国比较早,在早前用汇编编程比较多,我在上大学时也是学习的汇编编程,但是现在我用C语言编程,汇编已经不会了。51单片机比较常用的编程环境是Keil,现在Keil更新到Keil5了。如下是51单片机Keil的编程环境。STM32单片机的编程STM32单片机是意法半导体推出的高性价比、片上资源丰富的32位单片机,这个系列的单片机我一直在用,都是用C语言进行编程,官方推出的库函数和HAL库都是用C语言编程的,虽然有一部分汇编共存。STM32单片机用KeilMDK进行编程。Arduino的编程Arduino是一款做的非常成功的开源硬件,并且有自己的开发环境,将底层的寄存器设置都进行了封装,用户不用自己配置寄存器,调用封装好的函数即可,可以在官方网站下载编程IDE。Arduino旨在培养用户的编程兴趣,简化了技术难度,很受欢迎。在用户层面,现在C语言编程已经是主流,C语言的移植性和可读性比汇编语言有很大的优势,也有很多人在使用汇编编程,尤其是涉及到底层时。
2023-09-11 21:41:441

单片机编程,c语言中P0=_cror_(0x7f,bi)是什么意思

把函数_cror_(0x7f,bi)的返回值赋值给P0。函数的参数是0x7f和bi
2023-09-11 21:41:553

新概念51单片机C语言教程的作品目录

第1篇入门篇1.1单片机概述1.1.1什么是单片机1.1.2单片机标号信息及封装类型1.1.3单片机能做什么1.1.4如何开始学习单片机1.251单片机外部引脚介绍1.3电平特性1.4二进制与十六进制1.4.1二进制1.4.2十六进制1.5二进制的逻辑运算1.5.1与1.5.2或1.5.3非1.5.4同或1.5.5异或1.6单片机的C51基础知识介绍1.6.1利用C语言开发单片机的优点1.6.2C51中的基本数据类型1.6.3C51数据类型扩充定义1.6.4C51中常用的头文件1.6.5C51中的运算符1.6.6C51中的基础语句1.6.7学习单片机应该掌握的主要内容2.1Keil工程建立及常用按钮介绍2.1.1Keil工程的建立2.1.2常用按钮介绍2.2点亮第一个发光二极管2.3while语句2.4for语句及简单延时语句2.5Keil仿真及延时语句的精确计算2.6不带参数函数的写法及调用2.7带参数函数的写法及调用2.8利用C51库函数实现流水灯第2篇内外部资源操作篇3.1数码管显示原理3.2数码管静态显示3.3数码管动态显示3.4中断概念3.5单片机的定时器中断4.1独立键盘检测4.2矩阵键盘检测5.1模拟量与数字量概述5.2A/D转换原理及参数指标5.3ADC0804工作原理及其实现方法5.4D/A转换原理及其参数指标5.5DAC0832工作原理及实现方法5.6DAC0832输出电流转换成电压的方法第6章串行口通信原理及操作流程6.1并行与串行基本通信方式6.2RS-232电平与TTL电平的转换6.3波特率与定时器初值的关系6.451单片机串行口结构描述6.5串行口方式1编程与实现6.6串行口打印在调试程序中的应用第7章通用型1602,12232,12864液晶操作方法7.1液晶概述7.2常用1602液晶操作实例7.3常用12232液晶操作实例7.4常用12864液晶操作实例第8章I2C总线AT24C02芯片应用8.1I2C总线概述8.2单片机模拟I2C总线通信8.3E2PROMAT24C02与单片机的通信实例第9章基础运放电路专题9.1运放概述及参数介绍9.2反相放大器9.3同相放大器9.4电压跟随器9.5加法器9.6差分放大器9.7微分器9.8积分器第3篇提高篇第10章定时器/计数器应用提高10.1方式0应用10.2方式2应用10.3方式3应用10.452单片机定时器2介绍10.5计数器应用第11章串行口应用提高11.1方式0应用11.2方式2和方式3应用11.3单片机双机通信11.4单片机多机通信第12章指针12.1指针与指针变量12.1.1内存单元、地址和指针12.1.2指针变量的定义、赋值与引用12.2指针变量的运算12.3指针与数组12.3.1指针与一维数组12.3.2指针与多维数组12.4指针与函数12.4.1指针作为函数的参数12.4.2指向函数的指针12.4.3指针型函数12.5指针与字符串12.5.1字符串的表达形式12.5.2字符指针作为函数参数12.5.3 使用字符指针与字符数组的区别12.6指针数组与命令行参数12.6.1 指针数组的定义和使用12.6.2指向指针的指针12.6.3 指针数组作为main()函数的命令行参数12.7指针小结12.7.1指针概念综述12.7.2指针运算小结12.7.3等价表达式12.8C51中指针的使用12.8.1指针变量的定义12.8.2指针应用第13章STC系列51单片机功能介绍13.1单片机空闲与掉电模式应用13.2“看门狗”概念及其应用13.3用软件实现系统复位13.4内部扩展RAM的应用13.5扩展P4口的应用13.6内部E2PROM的应用13.7STC89系列单片机内部A/D应用13.8STC12系列单片机内部A/D应用13.9STC12系列单片机的PCA/PWM介绍13.10STC12系列单片机的SPI接口介绍13.11STC12系列单片机的“576MHz”超速运行第4篇实战篇第14章利用51单片机的定时器设计一个时钟14.1如何从矩阵键盘中分解出独立按键14.2原理图分析14.3实例讲解第15章使用DS12C887时钟芯片设计高精度时钟15.1时钟芯片概述15.2DS12C887时钟芯片介绍15.3如何用TX-1C实验板扩展本实验15.4原理图分析15.5实例讲解第16章使用DS18B20温度传感器设计温控系统16.1温度传感器概述16.2DS18B20温度传感器介绍16.3实例讲解第17章太阳能充/放电控制器17.1控制器原理图分析17.2控制器板上元件介绍17.3实例讲解第18章VC、VB(MSCOMM控件)与单片机通信实现温度显示18.1VCMSCOMM控件与单片机通信实现温度显示18.2VBMSCOMM控件与单片机通信实现温度显示第5篇拓展篇第19章使用Protell99绘制电路图全过程19.1绘制电路板概述19.2建立工程19.3制作元件库19.4添加封装及制作PCB封装库19.5错误检查及生成PCB19.6布线电气特性设置19.7自动布线和手动布线第20章ISD400x系列语音芯片应用20.1ISD400x系列语音芯片介绍20.2ISD400x系列语音芯片操作规则20.3ISD400x系列语音芯片应用实现第21章电机专题21.1直流电机原理及应用21.2步进电机原理及应用21.3舵机原理及其应用第22章常用元器件介绍22.1二极管22.2电容22.3场效应管22.4光耦22.5蜂鸣器22.6继电器22.7自恢复保险22.8瞬态电压抑制器22.9晶闸管(可控硅)22.10电荷泵第23章直流稳压电源专题23.1整流电路23.2滤波电路23.3稳压电路23.4集成稳压模块的使用23.5串联开关型稳压电源第24章运放扩展专题24.1简单低通滤波器24.2“电流-电压”转换电路24.3光电放大器24.4精密电流源24.5可调参考电压源24.6复位稳定放大器24.7模拟乘法器24.8全波整流器和平均值滤波器24.9正弦波振荡器24.10三角波发生器24.11自动跟踪对称电源24.12可调实验电源24.13运放相关术语表附录A天祥电子开发实验板简介A.1TX-1C51单片机开发板(配套详细视频教程)A.2AVR单片机开发板(配套详细视频教程)A.3PIC单片机开发板(配套详细视频教程)A.4J-Link全功能ARM仿真器A.5三星S3C44B0ARM7入门级开发板A.6三星S3C44B0ARM7提高级开发板A.7TX-51STAR51单片机开发板(配套详细视频教程)参考文献
2023-09-11 21:42:031

c语言错误p1, undefined identifier是什么意思?

说明你用了一个没有定义的函数或者变量
2023-09-11 21:42:192

单片机c语言程序解读,,求解释。。

数码管滚动显示数字。
2023-09-11 21:42:483

用c语言编写的单片机程序(就是书上的程序),进行烧录之后就可以让单片机工作?

是的,但你疑问的问题也是存在的。针对不同的单片机,有不同的编译器,每种单片机的c语言编译器都对c语言做了适用于单片机的扩展。编译器在编译单片机c语言的代码时要有一些设置选项或者makefile之类的设置,这些设置对了,程序才能适应选定的单片机。
2023-09-11 21:42:574

单片机C语言实验电脑时钟编程

org 0000h ljmp start ORG 001BH ;INT T1 入口地址 lJMP INT_T1 ORG 0080Hstart: MOV SP,#60H mov 30h,#0 mov 31h,#0 mov 32h,#0 mov 33h,#0 mov 34h,#0 mov 35h,#0 mov 36h,#0 mov 37h,#0 MOV R3,#0H ;时 MOV R2,#0H ;分 mov r1,#0h ;秒 MOV R6,#0H ;标志 mov r7,#0h ;标志 MOV 38h,#0H ;标志 mov 39h,#0h ;标志 MOV TMOD,#10H MOV TL1,#00H ;50 mS 的时间常数 MOV TH1,#04CH MOV R0,#10 mov r4,#2 setb p2.7 SETB TR1 SETB ET1 SETB EA ;允许中断loop: lcall scankey cjne r7,#0ffh,wait1 lcall display2 sjmp loop wait1: CJNE R6,#0FFH,wait LCALL DISPLAY1 MOV 34H,30H MOV 35H,31H MOV 36H,32H MOV 37H,33H sjmp loop wait: lcall display SJMP loop INT_T1: ;INT_T1中断服务子程序 PUSH DPH ;保护现场 PUSH DPL PUSH ACC PUSH PSW CLR TR1 MOV TL1,#00H ;50mS 定时常数 MOV TH1,#4CH SETB TR1 DJNZ R4,EXIT1 MOV R4,#2 mov a,30h CJNE a,#09h,s0 MOV 30h,#0 mov a,31h CJNE a,#9H,s1 MOV 31h,#0H mov a,32h CJNE a,#9H,s2 MOV 32h,#0H mov a,33h CJNE a,#9H,s3 MOV 33h,#0H s3: mov a,33h add a,#1 mov 33h,a s2: mov a,32h add a,#1 mov 32h,a s1: mov a,31H add a,#1 mov 31H,a s0: mov a,30H add a,#1 mov 30H,a DJNZ R0,EXIT1 ;判断毫秒=0 MOV R0,#10 ;DELAY 1 SECOND cpl p2.7 mov a,38h cjne a,#0ffh,next1 ljmp hour1 next1: mov a,39h cjne a,#0ffh,next2 ljmp minute1 next2: CJNE R1,#59H,SECOND ;判断秒=59 MOV R1,#99Hminute1:CJNE R2,#59H,MINUTE ;判断分=59 MOV R2,#99H hour1:CJNE R3,#23H,HOUR ;判断时=23 MOV R3,#99HHOUR: MOV A,R3 ADD A,#1 ;时加1 DA A MOV R3,A mov a,38h cjne a,#00,exit1MINUTE: MOV A,R2 ADD A,#1 ;分加1 DA A MOV R2,A mov a,39h cjne a,#00,exit1SECOND: MOV A,R1 ADD A,#1 ;秒加1 DA A MOV R1,A EXIT1: mov 38h,#0h mov 39h,#0h POP PSW ;恢复现场 POP ACC POP DPL POP DPH RETI ;中断返回DISPLAY: MOV A,R3 ANL A,#0FH mov dptr,#ledseg movc a,@a+dptr MOV P0,A ;MOV P2,#0fbh setb p2.0 clr p2.2 setb p2.1 setb p2.3 lcall delay MOV A,R3 SWAP A ANL A,#0FH mov dptr,#ledseg movc a,@a+dptr MOV P0,A setb p2.0 clr p2.3 setb p2.2 setb p2.1 ;MOV P2,#0f7h lcall delay MOV A,R2 ANL A,#0fH mov dptr,#ledseg movc a,@a+dptr MOV P0,A setb p2.1 clr p2.0 setb p2.2 setb p2.3 ;MOV P2,#0feh lcall delay MOV A,R2 SWAP A ANL A,#0FH mov dptr,#ledseg movc a,@a+dptr MOV P0,A setb p2.0 clr p2.1 setb p2.2 setb p2.3 ;MOV P2,#0fdh lcall delay RETdisplay1: MOV A,30h mov dptr,#ledseg movc a,@a+dptr MOV P0,A MOV P2,#0feh lcall delay MOV A,31h mov dptr,#ledseg movc a,@a+dptr MOV P0,A MOV P2,#0fdh lcall delay MOV A,32H mov dptr,#ledseg movc a,@a+dptr MOV P0,A MOV P2,#0fbh lcall delay MOV A,33H mov dptr,#ledseg movc a,@a+dptr MOV P0,A MOV P2,#0f7h lcall delay RETdisplay2: MOV A,34h mov dptr,#ledseg movc a,@a+dptr MOV P0,A MOV P2,#0feh lcall delay MOV A,35h mov dptr,#ledseg movc a,@a+dptr MOV P0,A MOV P2,#0fdh lcall delay MOV A,36H mov dptr,#ledseg movc a,@a+dptr MOV P0,A MOV P2,#0fbh lcall delay MOV A,37H mov dptr,#ledseg movc a,@a+dptr MOV P0,A MOV P2,#0f7h lcall delay RETdelay: ;延时子程序 PUSH 0 ;保存现场 PUSH 1 MOV 0,#1HDELAY1: MOV 1,#0FH DJNZ 1,$ DJNZ 0,DELAY1 POP 1 ;恢复现场 POP 0 RETscankey: setb p1.0 jb p1.0,p11 lcall delay jb p1.0,p11 mov r6,#0ffh mov r7,#0h mov 30h,#0 mov 31h,#0 mov 32h,#0 mov 33h,#0 SJMP loop1 p11: setb p1.1 jb p1.1,P12 lcall delay jb p1.1,p12 mov r6,#0h mov r7,#0h sjmp loop1 p12: SETB P1.2 JB P1.2,p13 lcall delay jb p1.2,p13 mov r7,#0ffh sjmp loop1 p13: setb p1.3 jb p1.3,p14 lcall delay jb p1.3,p14 mov 38h,#0ffh sjmp loop1 p14: setb p1.4 jb p1.4,loop1 lcall delay jb p1.4,loop1 mov 39h,#0ffh sjmp loop1 loop1: retLEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;"0,1,2,3,4,5,6,7" DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;"8,9,A,B,C,D,E,F" DB 6DH,02H,08H,00H,59H,0FH,76H end
2023-09-11 21:43:234

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

我做了流水灯,可以到我QQ空间看源程序初稿。
2023-09-11 21:43:343

51单片机c语言程序

TMOD=0x01;//T0,工作方式1TH0=0xb1;//20ms定时,自己定的TL0=0xe0;//算的TR0=1;//开启T0定时器ET0=1;//允许T0定时器中断EA=1;//开启总中断允许
2023-09-11 21:43:445

不同单片机c语言编程有何不同?要学习英飞凌8位和16位单片机c编程,可是几乎所有书都是对51的,该从哪入手

这样吧!你还是先学8位的,16位用的不广泛,我可以介意你看下一个视频吗?绝对对你有作用,我学单片机看了他一篇视频就有了很大认识,<霖锋带你从51征服嵌入式>霖锋老师讲的非常好希望对你有帮助.......谢谢
2023-09-11 21:44:004

简答:鲁迅杂文的思想,艺术特质是什么?

鲁迅杂文的思想:鲁迅杂文内容丰富广博。对旧社会旧文明和复古派的批判,猛烈抨击封建性反动政权及其反动政策,对帝国主义侵略的揭露、斗争,对文化、文学战线上错误倾向的批评、暴露,针砭社会病态心理和国民性的弱点,是鲁迅杂文的几个重点内容,形成和现实密切结合的批判性战斗性的思想特色。此外,有一部分杂文歌颂了新生力量,歌颂了革命斗争。 鲁迅前期杂文侧重对封建性旧文明旧道德的批判,充分体现以科学与民主为旗帜,彻底反对封建文化的“五四”精神,同时还探索和研究国民性的问题,暴露和批判了卑怯、惰性、保守、巧滑等国民性的弱点。后期杂文对旧中国社会和思想、文化、文学进行了更为广泛而深入的批判。后期杂文由于娴熟地掌握了辩证法,所以更为深刻有力。在批判现实时,深挖坏种的祖坟;在批判封建历史时,紧密结合现实斗争,把历史批判和现实批判紧密结合;把对封建思想道德的批判和对封建性反动政治的批判紧密结合。鲁迅杂文的艺术特质:1、鲁迅杂文是一个不停息的批判、论战、反击的思想文化斗争的编年史,具有强烈的批判性、否定性、攻击性特质;2、反常规的杂文思维和犀利的杂文笔调。鲁迅的批判,不同于一般的思想评论,他最为关注并全力揭示的是人们的隐蔽的、甚至自身也未必自觉意识的心理状态。3、“社会相”与形象化:他的思路起点总是具体的个别的人与事。而又是将个别人、事置于时代、社会、历史的最大时空下,进行剖析与开掘,以一种非凡的思想穿透力。看到这一具体人、事所代表、暗示的一种普通性特征。4、自由创造的杂文语言:鲁迅杂文的语言是自由无拘束、而且极富创造力的。一方面,他自由驱使中国汉语的多种句式;或口语与古文言句式;或排比、重复句式的交叉运用;或长句与短句、陈述句与反问句的相错等。另一方面,他故意违反规范用语,打破语法规则,制造一种不和谐的“拗体”取得荒诞奇绝的美学效果。
2023-09-11 21:40:043

烟草证可以过户转让吗,具体怎样变更

《中华人民共和国行政许可法》(法律)第九条 依法取得的行政许可,除法律、法规规定依照法定条件和程序可以转让的外,不得转让。 《烟草专卖许可证管理办法》(规章)第四十二条 任何企业或者个人不得涂改、伪造、变造烟草专卖许可证。不得买卖、出租、出借或者以其他形式非法转让烟草专卖许可证。 《烟草专卖许可证管理办法》(规章)第三十二条第二项烟草专卖零售许可证的持证人因主体(指持证人)、企业类型(指个体工商户变更为股份有限公司等情形)或者地址发生改变的,应当重新申领烟草专卖零售许可证。 根据上述法律和规章等规定,烟草专卖零售许可证是不得转让。原持证人应当到发证机关去依法申请办理注销手续之后,实际经营者重新申领烟草专卖零售许可证。尚未注销或重新申领烟草专卖零售许可证的,发证机关会依照《烟草专卖许可证管理办法》(规章)第四十五条第一款和第二款等规定,责令持证人暂停烟草专卖业务、进行整顿,直至取消其从事烟草专卖业务的资格。
2023-09-11 21:40:042

图片源自网络侵删什么意思

回答:图片来自网络,如果侵犯了版权,请通知作者(我),马上删除。例如:如有侵权请联系删除。侵删一般指作者为了防止自己的原创作品被抄袭,在文章中注明:原创侵删。以警示他人。延伸:版权(copyright)是用来表述创作者因其文学和艺术作品而享有的权利的一个法律用语。版权是对计算机程序、文学著作、音乐作品、照片、游戏,电影等的复制权利的合法所有权。除非转让给另一方,版权通常被认为是属于作者的。大多数计算机程序不仅受到版权的保护,还受软件许可证的保护。版权只保护思想的表达形式,而不保护思想本身。算法、数学方法、技术或机器的设计均不在版权的保护之列。参考资料来源:百度百科-侵删
2023-09-11 21:40:051

思念汤圆为什么煮不糯

煮的时间不够或者是煮的方法有问题。煮汤圆的方法:1.准备汤圆。2.烧开水。3.水滚开,依次下入汤圆,用勺子推动汤圆,别粘锅,推动汤圆顺时针方向,水也带动起来为宜。4.盖盖大火煮3—5分钟。5.汤圆全部浮起,饱满圆润,再煮半分钟即可关火,盛出。6.圆圆香香的汤圆煮好了,可以吃了。
2023-09-11 21:40:031

如何规范自己的科学研究素养

按照科学素养的三个方面要求自己,不断学习。三个方面的作用分别是:学习科学知识是提高科学素养的基本的前提。知识靠积累,锲而不舍地坚持不难做到。学习科学知识的同时,了解科学过程和科学方法,并在生活中用科学方法办事,是提高科学素养最重要、最有价值的。做起来有点难度,但是坚持用科学方法办事,收益真是大的想不到。了解科技进步对社会和个人的影响,会对科学有全面的认识,热爱科学。所以,我们在学习知识的同时,要有意识地去了解,前人怎样得到这个经验和知识?如何得到这个发现?甚至暂时摒弃现有的知识,“穿越”到前人当时的环境和条件下,了解他们如何思考的,这样体会到其中的智慧。这样的“体会”从书上难以找到。谁不愿意有智慧?对科学方法有比较深的认识,为在生活中应用科学方法“水到渠成” 。有意识地了解并深入理解科学方法,应用科学方法解决日常遇到的生活和工作中的问题,自觉地、自然地用科学方法办事,就达到了较高的科学素养。科学素养的不同,日常工作和生活中,处理问题的态度和方法就不同。科学素养高的人,遇事很理智地用科学的方法处理问题。即使很棘手的问题,也能使向好的方向发展。即使犯错误,勇于承认和改正,也得到大家的谅解。生活中人们也常赞叹佩服这样的人,讲道理,为人大度肯自己吃亏,办事公正磊落。这样的人有人缘,得到众人的尊敬。其实这样的人就是在用科学方法办事,不是自己的不伸手,财物乃身外之物,再多也只“日吃三餐,夜眠一床”。顶住“物质欲”引诱,确实令人佩服。并且自己错了就是错了,不讳疾忌医。是“外柔内刚”的强大。
2023-09-11 21:40:031