单片机

阅读 / 问答 / 标签

单片机,adc0832,写ST位,写SGL位是什么意思?

要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示起始信号。在第2、3个脉冲下沉之前DI端应输入2 位数据用于选择通道功能,当此2 位数据为“1”、“0”时,只对CH0 进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当2 位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当2 位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1 作为正输入端IN+进行输入。到第3 个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出 DC0832封装以及各端子(1张)完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。

单片机C语言编译错误:requires ANSI-style prototype

这个跟代码在文本中的编码格式有关,比如ANSI,或者UTF-8等格式你试着手工在编译器中输入一遍,或者将文本拷贝入记事本,保存为ANSI(一般这个比较通用)格式,如若不行,请讲其他格式一一尝试如若仍不行,恕本人才疏学浅未能解惑

单片机C语言编译错误: requiresAccession

单片机C语言编译错误:requires ANSI-style prototype是设置错误造成的,解决方法为:1、打开Keil后选择【File】下的【new】新建一个空白文档。将编辑好的程序源码复制到该文件中。2、选择左上角的保存按钮进行保存,将弹出保存对话框。3、选择保存路径和编辑文件名。记住,这里的文件名很重要,如果你是C语言程序的话,加上.c后缀,如果你是用汇编语言,加上.ASM后缀。这样,Keil就能自动识别你的文件类型了。4、现在你就可以将保存的文件添加到项目中了,项目文件要提前在[Project]中新建。右击选择【Source Group1】点击【Add Files to Group..。5、在弹出的对话框中选择[文件类型]为All files,这个很关键。然后选择你要添加的文件。点击Add添加。6、切换到[output]选项卡选中【Create HEX FILE】,就可以在编译成功后自动生成.hex文件。编译按钮在左上角3个按钮,从左到右依次点击,如果源码没错,都可以编译通过了。

单片机C语言编译错误: requires ANSI- style prototype是什么意思

单片机C语言编译错误:requires ANSI-style prototype是设置错误造成的,解决方法为:1、打开Keil后选择【File】下的【new】新建一个空白文档。将编辑好的程序源码复制到该文件中。2、选择左上角的保存按钮进行保存,将弹出保存对话框。3、选择保存路径和编辑文件名。记住,这里的文件名很重要,如果你是C语言程序的话,加上.c后缀,如果你是用汇编语言,加上.ASM后缀。这样,Keil就能自动识别你的文件类型了。4、现在你就可以将保存的文件添加到项目中了,项目文件要提前在[Project]中新建。右击选择【Source Group1】点击【Add Files to Group..。5、在弹出的对话框中选择[文件类型]为All files,这个很关键。然后选择你要添加的文件。点击Add添加。6、切换到[output]选项卡选中【Create HEX FILE】,就可以在编译成功后自动生成.hex文件。编译按钮在左上角3个按钮,从左到右依次点击,如果源码没错,都可以编译通过了。

单片机C语言编译错误:requires ANSI-style prototype

编码格式不对;

单片机C语言编译错误:requires ANSI-style prototype

单片机C语言编译错误:requires ANSI-style prototype是设置错误造成的,解决方法为:1、打开Keil后选择【File】下的【new】新建一个空白文档。将编辑好的程序源码复制到该文件中。2、选择左上角的保存按钮进行保存,将弹出保存对话框。3、选择保存路径和编辑文件名。记住,这里的文件名很重要,如果你是C语言程序的话,加上.c后缀,如果你是用汇编语言,加上.ASM后缀。这样,Keil就能自动识别你的文件类型了。4、现在你就可以将保存的文件添加到项目中了,项目文件要提前在[Project]中新建。右击选择【Source Group1】点击【Add Files to Group..。5、在弹出的对话框中选择[文件类型]为All files,这个很关键。然后选择你要添加的文件。点击Add添加。6、切换到[output]选项卡选中【Create HEX FILE】,就可以在编译成功后自动生成.hex文件。编译按钮在左上角3个按钮,从左到右依次点击,如果源码没错,都可以编译通过了。

单片机memcpy为什么要关中断

memcpy函数是对内存操作,在这期间,如果发生中断,进入中断服务程序,那么可能会造成数据混乱。或者破坏时序,打断memcpy的操作进程。

求:用单片机C语言做题目

时钟可以采用数码管的动态显示!计时可用定时器!

用C语言编写程序使89C52单片机实现数字时钟功能,显示时分秒的数码管,p1~p7接a~G急求!

这样的好人不多了。。。

本人初学单片机,求第一个数码管显示1,1S后第二个数码管 显示2以此类推直到第六个 显示 6的C语言程序。

我不清楚初学单片机求这样的程序拿来做什么,如果真是为了学习请献上您编程中遇到的问题和所要得到的信息,就算编个大概也比在这儿求强。。。

smg单片机编程的是什么意思

smg单片机编程的是一个可编程芯片。根据查询相关公开信息显示,smg单片机编程类似于电脑的CPU,只不过性能、成本、功耗都比cpu要低很多。

单片机c语言中编程disp()语句是什么意思

这 明显 是一个 函数,而不是 语句!自定义函数

单片机里sp是什么意思啊

一共五条传送指令。进行了三个部分的初始化:堆栈、定时器和中断系统。

单片机中的cy和ov要怎样理解啊,能否举例子

51单片机中的进位标志位Cy,在进行ADD之前,Cy=1,进行ADD或者ADDC过程中,最高位加完以后没有进位,那么结果是Cy继续保持1还是Cy会被置0?如果运算完后最高位没有进位,Cy会被置0,因为add或者addc命令的执行会影响Cy,有进位就置1,无进位就置0,跟Cy的初值无关。一、加法指令1、不带进位加法指令工作寄存器、内部RAM单元内容或立即数的8位无符号二进制数和累加器A中数相加,所得和存放于累加器A中,当和的第3、7位有进位时,分别将AC,CY标志位置1;否则为0。 上述指令的执行将影响标志位AC、CY、OV、P。 对于无符号数,进位标志位CY=1,表示溢出;CY=0表示无溢出。带符号数运算的溢出取决于第6、7位中有一位产生进位,而另一位不产生进位,溢出标志位OV置“1”否则被清“0”。OV=1表示两个正数相加,和变为负数,或两个负数相加,和变为正数的错误结果。2、带进位加法指令将累加器A内容加当前CY标志位内容,再加无符号单字节的数,和存于累加器A中。当运算结果第3、7位产生进位溢出时,则分别置位AC、CY和OV标志位。本指令执行将影响标志位AC、CY、OV、P。二、减法指令1、带借位减法指令带借位减法指令SUBB,从累加器A中减去进位标志位CY和指定的变量,结果在累加器A中,若第七位有借位,则置位位CY,否则CY清0。若第3位有错位,则置位辅助进位标志AC,否则清0 AC。若第7和第6位中有一位需借位,而另一位不借位,则置位溢出标志OV。溢出位OV用于带符号的整数减法,它表示(OV=1)一个正数减负数结果为负数;或一个负数减正数结果为正数的错误结果。三、乘法指令本指令将累加器A和寄存器B中二个8位无符号整数进行相乘,16位乘积的低8位存于A中,高8位存于B中,如果乘积大于255(0FFH),即B的内容不为0时,则置位溢出标志位OV,否则清“0”OV。进位标志位CY总是清“0”。四、除法指令本指令将累加器A中8位无符号整数除以B寄存器中8位无符号整数,所得结果商的整数部分存于A中,整数作数部分存于寄存器B中。清“0”CY和OV标志位。当除数(B中内容)为00H时,则执行结果将为不定值,即执行结果送往A和B中的为不定值,且置位溢出标志位OV。在任何情况下,均清“0”CY。

单片机中的溢出标志位 ov请详细解释一下??在线等。

分加法溢出和减法溢出,比如 加法溢出就是两个数相加超过255 MOV A,#80H ADD A,#80H 这个时候 80H+80H=100H=256就会溢出OV会置1还有加法溢出就是大数减小数,比如1-2;

单片机PSW中的OV怎么用啊?

OV是最高位和次高位做异或运算。。。当最高位和次高位同时有进位时它是0最高位和次高位中只有一个有进位,它就是1。。。这个能看懂么?

单片机汇编语言中 CY AC OV 分别是什么意思?

你说的CYACOV是PSW(程序状态字寄存器)中的标志位。CY:进位标志位;当CY=1时,表示操作结果最高位(位7)有进位或借位。CY=0时,表示操作结果最高位(位7)没有进位或借位。AC:半进位标志位;该位表示当进行加法或减法运算时,低半字节向高半字节是否有进位或借位;当AC=1时,表示低半字节向高半字节有进位或借位;AC=0时,表示低半字节向高半字节没有进位或借位;OV:溢出标志位,该位表示在进行有符号数的加减法时是否发生溢出;当0V=1时,表示有符号数运算结果发生了溢出,OV=0时,表示有符号数运算结果没有溢出。PS:http://baike.baidu.com/view/5048524.htm可以参考!希望以上的回答对你有帮助!谢谢!

请问FT245RL芯片支不支持USB-HOST主机模式?也就是说单片机能不能通过FT245RL来实现对优盘的读写。

试试CH375

各位师兄,小弟在proteus中调试一个pic16f877单片机程序,帮小弟看看这个问题怎么解决吧! 小弟感激不尽!

你是要仿真吧!而不是烧 晕你 先用左键选中IC,再右击IC 上面选 程序路径就好了 然后运行. 其它的CPU也是一样的

单片机:delay(100)是什么意思啊?

如果delay(1)是一毫秒 那delay(100)是100毫秒

51单片机delay()函数

最好是用定时器,延时不是很准,如果对时间精确度不高,可以用delay

单片机delay的用法

void delay(int z) //延时函数{int x,y; //定义两16位无符号变量for(x=0;x<125;x++) //从X=0开始,直到X=125,执行for(y=0;y<z;y++); //从Y=0开始,直到Y=Z}

52单片机C语言中“Delay”是什么意思,怎么用?

一般延时1ms的程序是:void Delay(uint x){ uchar i; while(x--) { for(i=120;i>0;i--); }}那么当你在别的函数中用到Delay(10000);就是延时10000ms,也就是10S

请问单片机中的delay()的单位时间是什么?

这要看你自己把delay函数写的延时是多久了

51单片机C语言中delay函数是怎么定义和使用的

void delay(char i){char j =0; for(i=0;i<255;i++) for(;i<255;j++)}void main(){delay(100);}

单片机delay函数是多少单位?

单片机中的delay()的单位时间不是系统提供的,而是用户自己编制的。如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。扩展资料单片机C语言程序中延时函数delay的原理是:仅仅执行一些,没有实质性影响的所谓“无意义指令”,比如做比大小啊,做某个int的自加运算啊之类的。单片机的有些程序需要调用延时程序,合理的安排循环次数以及空操作的个数方法:用汇编的话就根据你的当前晶振频率去推算你的指令周期,然后结合需要延迟的时间。编写延迟程序,用C的话还是要看最后生成的汇编码是什么样的了。最简单的方法就是写好程序以后再编译器里软仿真看时间。单片机C语言延时需注意的问题:标准的C语言中没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果。这在汇编语言中很容易实现,写几个nop就行了。在keil C51中,直接调用库函数:#include // 声明了void _nop_(void);_nop_(); // 产生一条NOP指令作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。对于延时比较长的,要求在大于10us,采用C51中的循环语句来实现。

单片机delay单位时间的含义是什么?

delay()是一个由编程者编写的函数(有些编程语言也有delay()库函数),其常见、常用时间单位有n个微秒、n个毫秒,有固定时长的函数也有根据赋值定义时长的函数,单片机在执行delay()函数时是通过循环反复执行加(减)法计算来消耗掉设定的时间。

单片机中delay函数精确延时多少ms?

单片机中的delay()的单位时间不是系统提供的,而是用户自己编制的。如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。扩展资料单片机C语言程序中延时函数delay的原理是:仅仅执行一些,没有实质性影响的所谓“无意义指令”,比如做比大小啊,做某个int的自加运算啊之类的。单片机的有些程序需要调用延时程序,合理的安排循环次数以及空操作的个数方法:用汇编的话就根据你的当前晶振频率去推算你的指令周期,然后结合需要延迟的时间。编写延迟程序,用C的话还是要看最后生成的汇编码是什么样的了。最简单的方法就是写好程序以后再编译器里软仿真看时间。单片机C语言延时需注意的问题:标准的C语言中没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果。这在汇编语言中很容易实现,写几个nop就行了。在keil C51中,直接调用库函数:#include // 声明了void _nop_(void);_nop_(); // 产生一条NOP指令作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。对于延时比较长的,要求在大于10us,采用C51中的循环语句来实现。

51单片机C语言中delay函数是怎么定义和使用的?

定义一个延时xms毫秒的延时函数void delay(unsigned int xms) // xms代表需要延时的毫秒数{unsigned int x,y;for(x=xms;x》0;x--)for(y=110;y》0;y--);}使用:void Delay10us(uchar Ms){uchar data i;for(;Ms》0;Ms--)for(i=26;i》0;i--);}i=[(延时值-1.75)*12/Ms-15]/4扩展资料1、在C51中进行精确的延时子程序设计时,尽量不要或少在延时子程序中定义局部变量,所有的延时子程序中变量通过有参函数传递。2、在延时子程序设计时,采用do?while,结构做循环体要比for结构做循环体好。3、在延时子程序设计时,要进行循环体嵌套时,采用先内循环,再减减比先减减,再内循环要好。

单片机c语言中的delay_ms(250) 是什么意思

意思就是延迟250ms,250就是100ms延时子函数写成1ms的。voiddelay(chari){charj=0;for(i=0;i<255;i++)for(;i<255;j++)}voidmain(){delay(100);}扩展资料单片机C语言变量作用域#include<reg52.h>//包含头文件sbitled=P0^0;unsignedcharcount=0;//定时累计变量,我们需要1000ms定时,50*20=1000//count是全局变量,通俗地说就是程序每次重新执行时值保持住最近一次的值voidmain(){TMOD=0x01;//设置定时器0工作方式1,16位计数TH0=(65536-45872)/256;//晶振11.0592MHz,定时50ms时TH0初值TL0=(65536-45872)%256;//晶振11.0592MHz,定时50ms时TL0初值EA=1;//开启总中断ET0=1;//开启定时器0中断TR0=1;//启动定时器0while(1){if(20==count)//1000ms定时时间到{count=0;//清零,使得可以再次定时1000msled=~led;//P0.0电平取反,也就实现LED灯的熄灭或者点亮}//这部分代码放到主函数里,中断服务程序中只有定时器初值的重新赋值和count变量的累加}}voidT0_INT()interrupt1//大家对照着上述格式看看{TH0=(65536-45872)/256;//晶振11.0592MHz,定时50ms时TH0初值TL0=(65536-45872)%256;//晶振11.0592MHz,定时50ms时TL0初值//重装初值,这个很好理解,我们需要每次定时的时间相同count++;//每进入一次中断,也就是说50ms时间到了,count变量进行累计//中断服务程序简洁,高效}

单片机c语言中delay()函数的头文件是什么?

delay函数是一个自己定义的延时函数,C语言定义延时函数主要通过无意义指令的执行来达到延时的目,并没有一个软件自带头文件专门有delay这个函数的。单片机c语言中delay()的使用:voidDelay10us(ucharMs){uchardatai;for(;Ms》0;Ms--)for(i=26;i》0;i--);}i=[(延时值-1.75)*12/Ms-15]/4扩展资料把delay(10000)改为100000voidmain(){inti;charstr[]="whatareyoufuckingdoing?";intlen=sizeof(str)/sizeof(char);for(i=0;i<len;i++){if(str[i]!=""&&str[i]!=""){delay(100000);}delay(100000);printf("%c",str[i]);}getch();}

单片机:delay(100)是什么意思啊?

delay通常是延时程序,其参数为100,一般这个参数都是delay基本延时的倍数,也就是100倍,至于基本延时时长需要给出具体程序,例如:delay(int time){ int i;for (i=0;i<time;i++);}扩展资料:函数名: delay功 能: 将程序的执行暂停一段时间(毫秒)(该函数是TC下特有的函数,VC下应使用Sleep()函数)用 法: void delay(unsigned milliseconds);单片机在电子技术中的开发,主要包括CPU开发、程序开发、 存储器开发、计算机开发及C语言程序开发,同时得到开发能够保证单片机在十分复杂的计算机与控制环境中可以正常有序的进行。参考资料来源:百度百科-单片机参考资料来源:百度百科-delay()

51单片机C语言中delay函数是怎么定义和使用的?

5 51单片机C语言中delay函数是怎么定义和使用的?voidDelay(unsignedinta){unsignedinti;while(--a!=0)

如何用单片机的delay实现延时?

单片机中的delay()的单位时间不是系统提供的,而是用户自己编制的。如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。扩展资料单片机C语言程序中延时函数delay的原理是:仅仅执行一些,没有实质性影响的所谓“无意义指令”,比如做比大小啊,做某个int的自加运算啊之类的。单片机的有些程序需要调用延时程序,合理的安排循环次数以及空操作的个数方法:用汇编的话就根据你的当前晶振频率去推算你的指令周期,然后结合需要延迟的时间。编写延迟程序,用C的话还是要看最后生成的汇编码是什么样的了。最简单的方法就是写好程序以后再编译器里软仿真看时间。单片机C语言延时需注意的问题:标准的C语言中没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果。这在汇编语言中很容易实现,写几个nop就行了。在keil C51中,直接调用库函数:#include // 声明了void _nop_(void);_nop_(); // 产生一条NOP指令作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。对于延时比较长的,要求在大于10us,采用C51中的循环语句来实现。

单片机的堆栈是怎样工作的

单片机中的堆栈是1个连续的存储区,采取后入先出的方式存取数据。1般PUSH操作是向堆栈中存入数据,POP操作从堆栈取得数据。PUSH的操作顺序和POP的操作顺序正好相反,例如有A.B.C.D4个变量的值,依照PUSHA,PUSHB,PUSHC和PUSHD存入堆栈,则需要用POPD,POPC,POPB,POPA的顺序提取。如果ABCD的类型字长1致,则堆栈还可用来交换变量的值,例如PUSHA,PUSHB,然后用POPA,POPB来实现A和B两个变量值的互换。但这样的操作不是所有单片机都支持。

单片机是不是asic、fpga混合系统?

不是,单片机就是asic。

51单片机属于ASIC吗

嗯 楼上正解

单片机问题

如果想简单的话,不需要用单片机,直接一个语音芯片就可以搞定了,具体你可以先看看ISD系列的可录语音芯片,就是比较贵。如果是固定的引擎声,你问问卖语音芯片的厂家,应该有掩膜ROM的版本卖,会很便宜,你把芯片的触发端接在油门控制上,利用高低电平就可以了。如果纯用单片机实现比较麻烦,不是很实际。

单片机cpu的主要功能有

简单的运算与逻辑控制

单片机C语言中断函数的定义形式是怎样的?

形式如下:void 中断名(void) inerrupt 中断号 using 工作寄存器组比如外部中断0void ext0(void) interrupt 0 using 1 //后面的using 1可以省略,缺省为0定时器1void t1isr() interrupt 3扩展资料:单片机内部结构1、CPU它的名字没有改,还是称为CPU(Central Processing Unit)。它是单片机的核心部件,包括运算器和控制器。运算器既是算术逻辑单元ALU(Arithmetic logic Unit),其功能是进行算术运算和逻辑运算。控制器一般由指令寄存器、指令译码器、时序电路和控制电路组成。其作用是完成取指令、将指令译码形成各种微操作并执行指令,同时控制计算机的各个部件有条不紊地工作。2、单片机内部结构之一ROM“硬盘”,改了名字,称为程序存储器,也叫只读存储器。用ROM(Read only memery)表示。其作用和计算机的硬盘差不多,用来存放用户编写的程序。特点是:掉电后不会丢失数据(程序)。

单片机crystal是什么意思

无源晶体振荡器(Crystal)是一种直接插入两个引脚的非极性元件,需要时钟电路的帮助才能产生振荡信号。49U和49S封装很常见。

单片机crystal是什么意思

无源晶体振荡器(Crystal)是一种直接插入两个引脚的非极性元件,需要时钟电路的帮助才能产生振荡信号。49U和49S封装很常见。

单片机汇编语言中符号 # 是什么意思

要单片机完成一项基本任务,必须将任务分解成一些具体步骤,再要求它去逐项执行每个步骤,还要对它下命令。该命令在单片机术语中称为“指令”(Inetruction)。完成一项任务所需的所有指令的有序集合就称为“程序”(Programm)。这些指令要预先一条一条顺序地放到单片机的程序存贮器中,单片机在运行时,片中的CPU从程序存贮器中逐条有序取出指令,执行指令,并将有关指令执行完毕,即可完成既定任务。 不同种类的单片机有不同的一套命令(即所谓“指令系统”)。PIC系列的单片机其指令系统与51系列的完全不同。PIC16F84有30余条指令构成的指令系统。每条指令由14位(bit)构成,这些位是二进制码的0和1,如果要使16F84端口B的B0位输出高电平,以点亮一只发光二极管LED,而B口的其余各位仍保持低电平,则需要使单片机执行下列各条指令(机器码): 11000000000000 00000001100110 11000000000001 00000010000110 10100000000100 早先的技术人员就是用这样的二进制码来编写程序的。上列程序,看起来像天书,很费解,但它完全能指挥单片机的运作。因为单片机实际上是一种复杂的数字逻辑电路。我们都知道,要数字电路运作,必须相应输入高、低电平,对正逻辑而言,高电平为1,低电平为0。上述指令顺序在不同的数位上出现的0和1,经译码后,即可完成各种不同的运作,逐步完成单片机所要执行的任务,如点亮一个LED。 上述各条指令的写法,虽然是完全面向单片机,是用来直接指示单片机该如何运作的。因此,这种由0、1组成的指令称为机器语言。 实际上,这种由二进码构成的指令集不但难读懂,而且用来编程也有困难。因为程序往往不是从头到尾顺序执行,有时还需中途转移到其它单元执行一段程序后再返回来。而指令是一条一条顺序存放在存贮器各个单元内的。因此,如果要转移,需指明具体转到哪个单元,即要写出该单元的地址。但在编写程序时,该程序有多长,具体要放到哪些单元中,都是未知数,又怎能具体指明要转到哪个单元呢? 由于用机器语言会使程序难写、难读,后来一种新型的语言形式——汇编语言就问世了。使用这种语言写程序较方便,也比较容易读懂。不过,和机器语言一样,不同类型的单片机有完全不同的汇编语言。就如不同地区的人有不同的方言一样。在汇编语言中,转移地址是用符号来表示的。现在,我们把上面由机器语言写成的程序改写成由汇编语言构成的程序: movlw B‘00000000" tris PORT B movlw B‘00000001" movwf PORT Bfin: goto fin 上列各条指令实际上是英语缩写和一些数组成的。如第一条中的movlw就是move Literal to w的缩写,其意义为照原样移入工作寄存器W,而“原样”就是后接引号内的数字‘00000000"。引号前的B表示后续的是二进制数。第二句是将W内的数复制到B口的三态(tri-state)控制寄存器中,以设定B口为输出,然后将00000001送入W中,再复制到B口;最后执行一条无限循环语句以保持B口的状态不变。从单片机外部看去,16F84的第6脚(即B0)维持为高电平,以点亮LED。 由上例可知,汇编语言较之机器语言要好懂得多。同时,最后一句自身循环也是一种转移语句,转移目的地就是此句所在单元地址,如用机器语言,就难以标出具体地址,而用汇编语言助记符fin即可替代。

急求~关于单片机的 下推式磁悬浮设计电路图和C语言程序, 可以发邮件到 yzjsiit@163.com 小弟在这里谢谢了

单片机net=p2.19是什么意思

的意思是P1.1赋值为1,其余赋值为0。51单片机的P1口是一个准双向I/O口,但是它没有多路开关和控制电路部分。

求用汇编语言编写的(R0R1 * R2R3)乘法程序,最好有注释, 单片机MS-51,能用送分300...

楼上的,要发财了吧?100分,楼主很大方啊:)

单片机中的dir是什么意思

bit 就是位变量的声明,应该就是一个符号代表方向用的

单片机里的自带的flash 多数是norflash 还是nand flash

前者可直接在存储中执行指令,单片机的是后者

瑞萨单片机M16C如何烧写程序?

上RENESAS网上下载FDT Renesas FLASH Development Toolkit

单片机与PC(怎样用C语言使两者连接)

这问题问的,语无伦次最简单的就是用串口与pc相连,然后两端都写串口的通信程序

SLH89F5162单片机与STC89C52单片机的区别?

SLH89F5162和STC89C52都是单片机芯片,它们的区别主要在以下几个方面:1. 厂家不同:SLH89F5162是由上海立华微电子有限公司生产的,而STC89C52是由深圳市英特尔基业电子有限公司生产的。2. 架构不同:SLH89F5162采用的是8051架构,而STC89C52采用的是STC89系列的架构。3. 性能不同:SLH89F5162的主频为16MHz,FLASH容量为64KB,RAM容量为4KB,而STC89C52的主频为12MHz,FLASH容量为8KB,RAM容量为256B。4. 功能不同:SLH89F5162支持多种通信接口,如UART、SPI、I2C等,还具有多种定时器和PWM输出功能。而STC89C52则支持多种中断方式和定时器功能。综上所述,SLH89F5162和STC89C52在架构、性能和功能等方面存在差异,用户在选择时应根据具体需求进行选择。

单片机AT89C51,想实现六个端口输入都是开关量,两个端口输出,

整个很容易实现,你使用C语言编辑吧。比如sbit input1=P1^1;sbit input2=p1^2;然后在main函数里判断它是否有信号即可。

“51单片机” 和 “zigbee” 、 “cc2530芯片” 之间的关系是什么?

1单片机:是一款比较老的单片机,至于单片机你可以把它理解成电脑中的CPU。Zigbee:是一短距离、低功耗的局域网无线通信技术,但可以进行自组网。CC2530:是TI公司推出的一款芯片,里面包含了51单片机的内核与Zigbee技术,而且TI提供了很好的Zigbee协议栈以及决解方案。什么是单片机?单片机是典型的嵌入式微控制器(Microcontroller Unit),由运算器,控制器,存储器,输入输出设备等构成,相当于一个微型的计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;从上世纪80年代,由当时的4位、8位单片机,已经发展到现在的32位300M的高速单片机。

“51单片机” 和 “zigbee” 、 “cc2530芯片” 之间的关系是什么?

1单片机:是一款比较老的单片机,至于单片机你可以把它理解成电脑中的CPU。Zigbee:是一短距离、低功耗的局域网无线通信技术,但可以进行自组网。CC2530:是TI公司推出的一款芯片,里面包含了51单片机的内核与Zigbee技术,而且TI提供了很好的Zigbee协议栈以及决解方案。什么是单片机?单片机是典型的嵌入式微控制器(Microcontroller Unit),由运算器,控制器,存储器,输入输出设备等构成,相当于一个微型的计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;从上世纪80年代,由当时的4位、8位单片机,已经发展到现在的32位300M的高速单片机。

【菜鸟求助】5V单片机和3.3V模块spi通信,中间用txs0108E电平转换芯片,无法通信,求大神分析

降低电压到3.7V,不用电平模块了

PIC单片机自己已经搞不定了~~~~~~~~~求大神解答

不是芯片的选型选错了吧?

单片机汇编指令中的RET1与RET有什么区别呀?

RET是用来对一般程序的返回指命,RETI是只用在中断中返回只要记住一点,中断返回用RETI,其它的用RET

单片机ret指令怎么用的

ret是子程序返回指令,就是说你用 “call 标号” 指令跳转到标号所在的行去运行,当运行到第一个ret时就跳转到 “call 标号” 的下一句去运行了。

单片机RET指令怎么运行

子程序运行完后,返回被调用地方 的指令。在中断中返回应用RETI

单片机知识:已知当前(sp)=7fh,则执行指令ret后,(sp)=?

已知当前(sp)=7fh,则执行指令ret后,(sp)=7dhRET指令 - 概念   RET是子程序的返回指令RET指令 - 执行过程   (SP)->PCH,然后(SP)-1->SP  (SP)->PCL,然后(SP)-1->SPRET指令 - 功能   从堆栈中退出pc的高8位和低8位字节,把堆栈指针减2,从pc值开始继续执行程序。不影响任何标志。

单片机汇编语言指令中中断返回指令RET和RETI有什么不同?

RET是子程序返回指令。RETI是中断服务程序返回指令。两者,用途不同。

单片机汇编指令中RETI和RET的区别

RET是从子程序返回,返回到LCALL或ACALL指令下一条指令处继续执行程序。RETI是从中断服务子程序返回,返回到中断时的断点处继续执行程序,断点未知。

在单片机中,RET和RETI分别是什么返回指令

RET 是子程序的返回指令RETI 不清楚

单片机中RET的用法

正常的应该跳回到AJMP MAIN.

单片机汇编语言指令中中断返回指令RET和RETI有什么不同?

RET是普通子程序的返回指令,RET是普通子程序的最后1条指令,它使程序从子程序转到调用该子程序指令LCALL/ACALL的下1条指令执行。RETI是中断服务子程序的返回指令,RETI是中断服务子程序的最后1条指令,它使程序从中断服务子程序转到中断点继续运行。RETI指令除了执行返回功能外,还清除内部相应的中断状态寄存器(该状态寄存器由CPU响应中断时置位,宣告CPU当前正在执行中断服务程序),因此中断服务子程序必须用RETI结束,CPU执行RETI指令后,必须至少再执行一条其它指令才能响应新的中断。

单片机汇编指令中RETI和RET的区别

1、方式不同当某一中断源响应后,单片机中的RETI将会自动置位,用于阻止比它低级或同级的中断触发。RETI可以清除“优先级激活触发器”(即flag寄存器),以保证后续中断源的及时响应。所以,当把RETI替换为RET后,该程序在第一次运行时可能不会出错,但在第二次运行时就会出错了。2、过程不同RET是从子程序返回,返回到LCALL或ACALL指令下一条指令处继续执行程序。RETI是从中断服务子程序返回,返回到中断时的断点处继续执行程序,断点未知。扩展资料:直接使用汇编指令编写单片机程序,对硬件的控制更加直接,可以直接操作物理地址,寄存器,端口等;其它更高级的语言(如:C语言)对硬件的控制是依赖于类库来实现的。并且,对于一些对程序大小和运行速度有非常严苛要求的项目而言,都必须使用汇编指令。C语言只是为了方便编写,与机器打交道的其实都是2进制得代码,汇编语言就是这些代码好记忆的名称和规则,只是比C语言难理解些。

单片机汇编语言指令中中断返回指令RET和RETI有什么不同?

RET是子程序返回指令,将堆栈中的地址弹出,而RETI是中断返回指令,除了将地址弹出,还将标志弹出

单片机中ISP和SPI的区别是什么?

ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。SPI(Serial Peripheral Interface)是一种串行串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。

单片机手册中常出现的ECC是什么的缩写啊

ECC的全称是 Error Checking and Correction or Error correction Coding,是一种用于差错检测和修正的算法。上一节的BBM中我们提到过,NAND闪存在生产和使用中都会产生坏块,BBM就是坏块的管理机制,而要 有效管理坏块的首要前提就是有可靠的坏块检测手段。如果操作时序和电路稳定性不存在问题,NAND闪存出错的时候一般不会造成整个Block或Page不 能读取甚至全部出错,而是整个Page中只有一个或几个bit出错,这时候 ECC就能发挥作用了。不同颗粒有不同的基本ECC要求,不同主控制器支持的ECC能力也不同,理论上来说ECC能力也是够用就行。 当前SSD内最普遍使用的ECC码是BCH码。当数据写入的时候,控制器内部的ECC模块计算数据并生成ECC签名,一般来说这个步骤非常 快,因此并不会影响整个SSD太多的性能表现。ECC的签名一般来说都保存在NAND页后部的SA区域,当数据从NAND读取的时候ECC模块回去读取 ECC签名,并对照相同与否来发现出现的错误。 相比发现错误,修复接收到的数据错误更复杂。第一步是检测收到的数据是否出错,这个和上面生成ECC签名的操作一样非常快。如果检测到接收 到的数据包含错误比特,就需要去生成独特的ECC算法(比如BCH),这部分会造成性能损失,但是只有在检测到错误时候才做。用生成的ECC算法来修复之 前检测到的错误。 必须强调的是,ECC解码过程是可能出现失败的,所以ECC系统架构必须合理的设计才能保证ECC不出错,而ECC能够修复的错误比特数取决于ECC算法设计。 如果ECC纠不过来, 一般会报ECC Fail, 用户表现为Read Fail,有时候ECC甚至诊测不到出错, 就会导致数据错误。 NAND的稳定性需要有多方面保障,ECC只能用来保证部分比特出错时的修复,如果整个页甚至块出现大面积错误,那么只有RAID这类的冗余保护才能修复了。 在企业级产品中对ECC甚至还有更苛刻的要求,那就是数据完整性检查,SSD内部所有的总线, 先进先出数据缓存器部分都要查,可以检测数据在进入NAND之前的错误。

单片机的试验箱上的LED点阵区域的SER;SCLR;SRCLK;RCK分别是什么?

芯片74HC595的输入信号。 如图。SER、14脚、串行数据输入;SCLR、10脚、主复位(低电平);SRCLK、11脚、移位寄存器时钟输入;RCK、12脚、存储寄存器时钟输入。

汽车发动机ECU是不是属于单片机 谢谢朋友你能个我答案

应该比单片机复杂很多。叫多片机也可以。

51单片机两个I/O口分别接ds18b20程序

这个网上多着呢,自己可以去找一找。也可以自己试着写一下这个程序。在Proteus里面有仿真,自己可以去玩玩的。

51单片机上电复位的那个短暂的时间内I/O管脚是什么状态?是高电平还是悬空?哪位大虾能告诉我?谢过了

你认为是高电平没错

C51单片机电子时钟设计思路

我有电路图和程序,要的话给我邮件anmko@163.com

学会51单片机能做什么工作?

首先51单片机是一个基础应用性的东西,对于找工作这个不是个什么好大的筹码(可以说不是筹码);因为行业内的人基本都会这个东西,而且只有在低端产品中才有应用。其次,在工作项目中,代替51的芯片太多,而且资源丰富能完成较复杂的工作;比如msp、STM32等等。这些32位、16位、或者有低功耗特色的芯片工作才会经常用到。大型的系统直接是上ARM-cortexA系列的芯片,跑的linux或者wince系统。所以学完51才刚刚开始而不是结束。

基于51单片机的电子秒表设计

汇编不会,C语言还行

一周内基于51单片机电子万年历设计

第一首先你得学会编程(C语言或者汇编语言)第二你还得会熟练使用51单片机的内部资源,主要是定时器,IO,中断。当然51内部定时器的时钟做钟表精度差,基本每天需要调时,另外就是断电后时间不能保存,建议你使用RTC芯片或者具有RTC的单片机,第三:你要懂的按键的消抖原理,第四:你要看懂DS18B20和1602液晶的数据手册或者看懂别人写的驱动测序也可以(建议你自己写驱动程序,这样你会学习到很多东西的,特别是对液晶的扫描方式和单总线的理解更加深刻,你也会尝到其中的乐趣,);第五:如果你需要自己绘制硬件电路,你还得清楚单片机的最小系统,普通的电源供电系统,IO的合理分配。

51单片机电子钟程序数码管显示

#include<reg51.h>#define uchar unsigned charsbit dula=P2^6;sbit wela=P2^7;sbit beep=P2^3;unsigned char j,k,a1,a0,b1,b0,c1,c0,s,f,m,key=10,temp,qq;uchar shi20,shi10,fen20,fen10,miao20,miao10,new,ok=1,wei;unsigned int pp;unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(unsigned char i){ for(j=i;j>0;j--) for(k=125;k>0;k--);}void display(uchar shi2,uchar shi1,uchar fen2,uchar fen1,uchar miao2,uchar miao1){ dula=0; P0=table[shi2]; dula=1; dula=0; wela=0; P0=0xfe; wela=1; wela=0; delay(5); P0=table[shi1]|0x80; dula=1; dula=0; P0=0xfd; wela=1; wela=0; delay(5); P0=table[fen2]; dula=1; dula=0; P0=0xfb; wela=1; wela=0; delay(5); P0=table[fen1]|0x80; dula=1; dula=0; P0=0xf7; wela=1; wela=0; delay(5); P0=table[miao2]; dula=1; dula=0; P0=0xef; wela=1; wela=0; delay(5); P0=table[miao1]; dula=1; dula=0; P0=0xdf; wela=1; wela=0; delay(5);}void keyscan0(){ P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); if(temp!=0xf0) { temp=P3; switch(temp) { case 0xbb: ok=0; break; case 0x7b: ok=1; break; } } } }void keyscan(){ { P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); if(temp!=0xf0) { temp=P3; switch(temp) { case 0xee: key=0; wei++; break; case 0xde: key=1; wei++; break; case 0xbe: key=2; wei++; break; case 0x7e: key=3; wei++; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; beep=0; } beep=1; } } P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); if(temp!=0xf0) { temp=P3; switch(temp) { case 0xed: key=4; wei++; break; case 0xdd: key=5; wei++; break; case 0xbd: key=6; wei++; break; case 0x7d: key=7; wei++; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; beep=0; } beep=1; } } P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); if(temp!=0xf0) { temp=P3; switch(temp) { case 0xeb: key=8; wei++; break; case 0xdb: key=9; wei++; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; beep=0; } beep=1; } }}}void main(){ TMOD=0x01; TH0=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。 TL0=(65536-46080)%256;//46080的来历,为50000*11.0592/12 ET0=1; EA=1; while(1) { keyscan0(); if(ok==1) { TR0=1; wei=0; if(pp==20) { pp=0; m++; if(m==60) { m=0; f++; if(f==60) { f=0; s++; if(s==24) //为24h一个循环,若要12h,只需在此改为12即可。 { s=0; } } } } a0=s%10; a1=s/10; b0=f%10; b1=f/10; c0=m%10; c1=m/10; display(a1,a0,b1,b0,c1,c0); } else { TR0=0; keyscan(); if(key!=10) { switch(wei) { case 1: if(key<3) //小时最高位为2 a1=key; else wei--; break; case 2: if(a1==1|a1==0) a0=key; else if(key<5) a0=key; //当小时最高位为2时,低位最高为4 break; case 3: if(key<7) //分钟最高位为6 b1=key; else wei--; break; case 4: b0=key; break; case 5: if(key<7) //秒最高位为6 c1=key; else wei--; break; case 6: c0=key; break; } key=10; } m=c1*10+c0; f=b1*10+b0; s=a1*10+a0; display(a1,a0,b1,b0,c1,c0); } }}void time0() interrupt 1{ TH0=(65536-46080)/256; TL0=(65536-46080)%256; pp++;}

基于51单片机的电子密码锁系统设计制作材料要买些什么东西,详细点,我在网上只能找到图片。急用啊!!!

单片机最小系统,LCD1602,矩阵按键,蜂鸣器,OK

51单片机 的实际应用有哪些?范围广吗?

单片机的应用领域 : 1.单片机在智能仪器仪表中的应用; 2.单片机在工业测控中的应用; 3.单片机在计算机网络和通讯技术中的应用; 4.单片机在日常生活及家电中的应用; 5.单片机在办公自动化方面。 6.最新的物联网行业物联网物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。其英文名称是:“Internet of things(IoT)”。顾名思义,物联网就是物物相连的互联网。这有两层意思:其一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;其二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信,也就是物物相息。物联网通过智能感知、识别技术与普适计算等通信感知技术,广泛应用于网络的融合中,也因此被称为继计算机、互联网之后世界信息产业发展的第三次浪潮。物联网是互联网的应用拓展,与其说物联网是网络,不如说物联网是业务和应用。因此,应用创新是物联网发展的核心,以用户体验为核心的创新2.0是物联网发展的灵魂。活点定义:利用局部网络或互联网等通信技术把传感器、控制器、机器、人员和物等通过新的方式联在一起,形成人与物、物与物相联,实现信息化、远程管理控制和智能化的网络。物联网是互联网的延伸,它包括互联网及互联网上所有的资源,兼容互联网所有的应用,但物联网中所有的元素(所有的设备、资源及通信等)都是个性化和私有化。
 首页 上一页  14 15 16 17 18 19 20 21 22 23 24  下一页  尾页