导航:首页 > 操作系统 > 单片机高手在线解答

单片机高手在线解答

发布时间:2022-08-22 09:33:42

⑴ 请单片机方面的高手解答!

你用的是电平触发方式,一直按住外部中断按键当然会不断地触发中断啦,MCU都忙着去处理你的中断信号啦!所以只有很少的时间处理主程序的程序啊!

⑵ 求高手解答单片机问题。

3、在 MCS-51中,PC和DPTR都用于提供地址,PC为访问( 程序 )存储器提供地址,而DPTR是为访问( 数据、以及 程序 )存储器提供地址。

6、单片机位寻址区的单元地址是从( 20H )单元到( 2FH )单元,若某位地址是09H,它所在单元的地址应该是( 21H )。

12、当单片机CPU响应中断后,程序将自动转移到该中断源所对应的入口地址处,并从该地址开始继续执行程序,通常在该地址处存放转移指令以便转移到中断服务程序。其中
INT1 的入口地址为(0013H),
串行口入口地址为( 0023H ),
T0 的 入口地址为(000BH)。

13、P0、P1、P2、P3四个均是(8)位的(并行)口(填“串行”还是“并行”),其中P0的功能是( 输出外部存储器的低8位地址 和 输入输出数据 )。

20、编程时,一般在中断服务子程序和调用子程序中需用保护和恢复现场,
保护现场用( PUSH )指令,
恢复现场用( POP )指令。

22、用MCS-51串行口扩展并行I/O口时,串行口工作方式应选择( 0 )。

25、假定(SP)=40H,(39H)=30H,(40H)=60H。执行下列指令:
--题目有错,39H、40H,不是连续的单元,不能当做本题目的已知条件。
POP DPH ,POP DPL后,DPTR的内容为( ),SP的内容是( )。

26、单片机的堆栈栈顶由( SP )来指示,复位时起位置在( 07H )单元。

27、
单片机内部数据传送指令( MOV ),用于单片机内部RAM单元及寄存器之间,
单片机与外部数据传送指令( MOVX )用于单片机内部与外部RAM或I/O接口之间,
( MOVC )指令用于单片机内部与外部ROM之间的查表。

31、8751有两个16位可编程定时/计数器,T0和T1。它们的功能可由控制寄存器( TMOD ) 、( TCON )的内容决定,
且定时的时间或计数的次数与( THx )、( TLx )两个寄存器的初值有关。

32、串行口的控制寄存器SCON中,REN的作用是( 允许接收控制位 )。

38、MCS-51的指令可分为几种不同的寻址方式。如:
MOV A,20H属于( 直接 )寻址方式,
MOVC A,@A+DPTR 属于( 变址 )寻址方式,
MOV C, bit 属于( 位 ) 寻址方式。

⑶ 请单片机高手为我解答,我的程序编译不成功,KEIL给出了提示,我想知道错在哪儿 不胜感激!完美者加分!

START:
MOV A, #01010101B
MOV P0,A
LCALL DELAY
; CPL P0 ; CPL 取反指令 为 位操作指令
MOV A, P0 ; 可以 用三条指令代替 ( 或者 用下面 两条就可以 )
CPL A
MOV P0, A
LCALL DELAY
AJMP START
DELAY:
MOV R7, #250
D1:MOV R6,#250
D2:DJNZ R6,D2
DJNZ R7,D1
RET
END

⑷ 一些关于单片机的问题,求高手解答

5.......数组指定了外部ram地址后,把定义数组和赋初值语句分成两个语句写就可以了:
exp:
unsigned char xdata Data0[48]_at_ 0x0000;
Data0[0]=x;Data0[1]=x;Data0[2]=x;Data0[3]=x;
个人觉得完全没有必要赋初值,需要写入数据的时候直接写入就可以了,如果是作为常量使用那就不用这种声明了。
6.....存储器一般都有WR,RD,CS线以及地址端口、数据端口,有些数据地址端口复用,有些分开。看这些存储器的datasheet就会明白如何访问他们内部的数据。例如读出外部ram地址为0x0001里的数据(假设有这个地址),那么就WR置高,CS置低,地址线上输出0x0001,那么CPU的数据线就可以等到需要的数据了,这种情况下CPU的I/O只是做普通的I/O口。但是一般单片机和ARM都能够把I/O选择作为外部存储器的访问口,这时只要根据datasheet里的说明,把相应的线连上,CPU就能够根据你的指令自动在时序上配合,使得访问外部设备就像访问内部ram一样,这样做的好处就是节省CPU时间。
7...................................
unsigned char 后面加 idata 就可以了

⑸ 单片机提问,高手解答!!!

1. 00H-1FH 四组工作寄存器区 每组占8B
20H-2FH 可位寻址区 共128位
30H-7FH用户RAM区(堆栈、数据缓冲)
80H-FFH为特殊功能寄存器SFR区
2 虽然地址一样,可是访问的指令不同,访问ROM用MOVC,访问内部RAM用MOV 访问外部RAM用MOVX,指令不同控制片选信号,读写RAM时,用RD和WR反来选通,读ROM时,用PSEN反来选通。因此不会因为地址重叠而产生错乱

⑹ 请单片机高手速速回答

10.串口通讯
单片机的结构和特殊寄存器,这是你编写软件的关键。至于串口通信需要用到那些特殊功能寄存器呢,它们是SCON,TCON,TMOD,SCON等,各代表什么含义呢?
SBUF 数据缓冲寄存器这是一个可以直接寻址的串行口专用寄存器。有朋友这样问起过“为何在串行口收发中,都只是使用到同一个寄存器SBUF?而不是收发各用一个寄存器。”实际上SBUF 包含了两个独立的寄存器,一个是发送寄存,另一个是接收寄存器,但它们都共同使用同一个寻址地址-99H。CPU 在读SBUF 时会指到接收寄存器,在写时会指到发送寄存器,而且接收寄存器是双缓冲寄存器,这样可以避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到来,而造成的数据重叠问题。发送器则不需要用到双缓冲,一般情况下我们在写发送程序时也不必用到发送中断去外理发送数据。操作SBUF寄存器的方法则很简单,只要把这个99H 地址用关键字sfr定义为一个变量就可以对其进行读写操作了,如sfr SBUF = 0x99;当然你也可以用其它的名称。通常在标准的reg51.h 或at89x51.h 等头文件中已对其做了定义,只要用#include 引用就可以了。
SCON 串行口控制寄存器通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器。SCON 就是51 芯片的串行口控制寄存器。它的寻址地址是98H,是一个可以位寻址的寄存器,作用就是监视和控制51 芯片串行口的工作状态。51 芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON 寄存器。它的各个位的具体定义如下:
SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0、SM1 为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。串行口工作模式设置。
SM0 SM1 模式 功能 波特率
0 0 0 同步移位寄存器 fosc/12
0 1 1 8位UART 可变
1 0 2 9位UART fosc/32 或fosc/64
1 1 3 9位UART 可变
在这里只说明最常用的模式1,其它的模式也就一一略过,有兴趣的朋友可以找相关的硬件资料查看。表中的fosc 代表振荡器的频率,也就是晶振的频率。UART 为(Universal Asynchronous Receiver)的英文缩写。
SM2 在模式2、模式3 中为多处理机通信使能位。在模式0 中要求该位为0。
REM 为允许接收位,REM 置1 时串口允许接收,置0 时禁止接收。REM 是由软件置位或清零。如果在一个电路中接收和发送引脚P3.0,P3.1 都和上位机相连,在软件上有串口中断处理程序,当要求在处理某个子程序时不允许串口被上位机来的控制字符产生中断,那么可以在这个子程序的开始处加入REM=0 来禁止接收,在子程序结束处加入REM=1 再次打开串口接收。大家也可以用上面的实际源码加入REM=0 来进行实验。
TB8 发送数据位8,在模式2 和3 是要发送的第9 位。该位可以用软件根据需要置位或清除,通常这位在通信协议中做奇偶位,在多处理机通信中这一位则用于表示是地址帧还是数据帧。
RB8 接收数据位8,在模式2 和3 是已接收数据的第9 位。该位可能是奇偶位,地址/数据标识位。在模式0 中,RB8 为保留位没有被使用。在模式1 中,当SM2=0,RB8 是已接收数据的停止位。
TI 发送中断标识位。在模式0,发送完第8 位数据时,由硬件置位。其它模式中则是在发送停止位之初,由硬件置位。TI 置位后,申请中断,CPU 响应中断后,发送下一帧数据。在任何模式下,TI 都必须由软件来清除,也就是说在数据写入到SBUF 后,硬件发送数据,中断响应(如中断打开),这时TI=1,表明发送已完成,TI 不会由硬件清除,所以这时必须用软件对其清零。
RI 接收中断标识位。在模式0,接收第8 位结束时,由硬件置位。其它模式中则是在接收停止位的半中间,由硬件置位。RI=1,申请中断,要求CPU 取走数据。但在模式1 中,SM2=1时,当未收到有效的停止位,则不会对RI 置位。同样RI 也必须要靠软件清除。常用的串口模式1 是传输10 个位的,1 位起始位为0,8 位数据位,低位在先,1 位停止位为1。它的波特率是可变的,其速率是取决于定时器1 或定时器2 的定时值(溢出速率)。AT89C51 和AT89C2051 等51 系列芯片只有两个定时器,定时器0 和定时器1,而定时器2是89C52 系列芯片才有的。
波特率在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通讯。波特率是指串行端口每秒内可以传输的波特位数。有一些初学的朋友认为波特率是指每秒传输的字节数,如标准9600 会被误认为每秒种可以传送9600个字节,而实际上它是指每秒可以传送9600 个二进位,而一个字节要8 个二进位,如用串口模式1 来传输那么加上起始位和停止位,每个数据字节就要占用10 个二进位,9600 波特率用模式1 传输时,每秒传输的字节数是9600÷10=960 字节。51 芯片的串口工作模式0的波特率是固定的,为fosc/12,以一个12M 的晶振来计算,那么它的波特率可以达到1M。模式2 的波特率是固定在fosc/64 或fosc/32,具体用那一种就取决于PCON 寄存器中的SMOD位,如SMOD 为0,波特率为focs/64,SMOD 为1,波特率为focs/32。模式1 和模式3 的波特率是可变的,取决于定时器1 或2(52 芯片)的溢出速率。那么我们怎么去计算这两个模
式的波特率设置时相关的寄存器的值呢?可以用以下的公式去计算。
波特率=(2SMOD÷32)×定时器1 溢出速率
上式中如设置了PCON 寄存器中的SMOD 位为1 时就可以把波特率提升2 倍。通常会使用定时器1 工作在定时器工作模式2 下,这时定时值中的TL1 做为计数,TH1 做为自动重装值 ,这个定时模式下,定时器溢出后,TH1 的值会自动装载到TL1,再次开始计数,这样可以不用软件去干预,使得定时更准确。在这个定时模式2 下定时器1 溢出速率的计算公式如下:
溢出速率=(计数速率)/(256-TH1)
上式中的“计数速率”与所使用的晶体振荡器频率有关,在51 芯片中定时器启动后会在每一个机器周期使定时寄存器TH 的值增加一,一个机器周期等于十二个振荡周期,所以可以得知51 芯片的计数速率为晶体振荡器频率的1/12,一个12M 的晶振用在51 芯片上,那么51 的计数速率就为1M。通常用11.0592M 晶体是为了得到标准的无误差的波特率,那么为何呢?计算一下就知道了。如我们要得到9600 的波特率,晶振为11.0592M 和12M,定时器1 为模式2,SMOD 设为1,分别看看那所要求的TH1 为何值。代入公式:
11.0592M
9600=(2÷32)×((11.0592M/12)/(256-TH1))
TH1=250

12M
9600=(2÷32)×((12M/12)/(256-TH1))
TH1≈249.49
上面的计算可以看出使用12M 晶体的时候计算出来的TH1 不为整数,而TH1 的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600 波特率。当然一定的误差是可以在使用中被接受的,就算使用11.0592M 的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十分之小的,可以忽略不计。
11.定时器1的溢出率,也叫定时器1的溢出频率,从设定初值开始计数,当计数到0FFH再一个计数脉冲到来时刻就溢出,初值越大溢出率也越高,我们使用这个溢出率确定通信波特率。
在使用11.0592MHz晶体时,SMOD=0,C/T=0,方式=2,波特率=9600,则定时器重装载数值是0FDH。
13. 0.125s

⑺ 求单片机高手解答!

if((Tc>Imin)&&(Tc<Imax)) 判断Tc是否在8~14ms之内
if(f==1) 同上,只不过是Tc在8~14ms之内之后的一次中断
if(Tc>Inum1&&Tc<Inum3) 判断Tc是否在1.45~3ms之内
if(Tc>Inum2&&Tc<Inum1) 判断Tc是否在0.7~1.45ms之内
if(m==32) 判断是否接收完32位数据
if(Im[2]=~Im[3]) 判断第三位数据和第四位数据是否互反。

⑻ 求单片机高手解答 空白的都是要填的

1.单片机应用系统是由软件和硬件组成的。

2、除了单片机和电源外,单片机最小系统包括复位和时钟电路。

3、MCS-51系列单片机的XTAL1和XTAL2引脚是晶振引脚。

4、MCS-51系列单片机的应用程序一般存放在程序存储器中。

5、MCS-51系列单片机的复位电路有两种,即上电复位电路和按键复位电路电路。

6、C51中定义一个可位寻址的变量P2_1访问P2口的P2.1引脚的方法是sbitP2_1=P2^1

7、123(十进制)=1111011B(二进制)=7BH(十六进制)。

8、若采用12MHz的晶体振荡器,则MCS-51单片机的振荡周期为1/12us机器周期为_1us_。

9、利用总线法对P1口0、2、4、6位输出高电平;1、3、5、7位输出低电平,C语言的程序写为:P1=0x55。

10、定时器方式寄存器TMOD的作用是设置定时/计数器0,1的工作方式和工作模式

11、定时器控制寄存器TCON的作用是:控制定时/计数器0,1的启动,停止

1、Intel8051单片机的CPU是C位的。

A.16B.4C.8D.准16位

2、程序是以D形式存放在程序存储器中的。

A.C语言源程序B.汇编语言C.BCD码D.二进制编码

3、使用单片机开发系统调试C语言程序时,首先应新建文件,该文件的扩展名是A。

A..cB..hexC..binD..asm

4、MCS-51系列单片机的4个并行I/O端口作为通用端口使用,在输出数据时,必须外接上拉电阻的是D。A.P3口B.P2口C.P1口D.P0口

5、C程序总是从A开始执行。A.主函数B.主程序C.子程序D.主过程

6、在C51程序中常常把D作为循环体,用于消耗CPU的时间,产生延时效果。

A.赋值语句B.表达式语句C.循环语句D.空语句

7、在C51的数据类型中,unsignedchar型的数据长度和值域为B。

A.单字节,-128~127B.单字节,0~255

C.双字节,-32768~+32767D.双字节,0~65535

8、单片机的定时器/计数器工作模式2是A。

A、8位计数器结构B、2个8位计数C、13位计数结构D、16位计数结构

9、在C51中,没有专门的循环语句,我们可以用库文件C.h中的函数______完成一个字节的循环左移,函数______完成一个字节的循环右移。

A、intrins.h_crol__cror_B、intrins.h_cror__crol_

C、reg51.h_crol__cror_D、reg51.h_cror__crol_

10、MCS-51系列单片机的定时器T0用做定时方式时,采用工作方式1,则初始化编程为A.A.TMOD=0x01B.TMOD=0x50C.TMOD=0x10D.TMOD=0x02

⑼ 请51单片机C编程高手解答,帮忙做一下注释,个人初学单片机,不是很懂。

我来简单解释一下吧,这是个典型的单片机程序实例。头文件是定义,包括所用到的按键、显示、A/D接口的各I/O口的定义,函数定义等。void main()是主函数,包括单片机内部寄存器的初始化,各状态标志的定义,while(1)这是监控程序,简单的说就是一个死循环,里面有显示函数、键盘监视函数等。后面的A/D转换函数和数据读取函数,不过while(1)中的一些函数没有写完整,因此不好确定你这个程序是怎么进行A/D转换的,猜测应该是当有按键按下的时候就会启动(调用)A/D程序。
就说这么多吧,还有不懂得还可以再交流!

⑽ 单片机高手进来帮帮忙,高分,简答题

1, a:CPU(微处理器) b:数据存储器(RAM)c:程序存储器(Flash ROM) d:中断系统 e:定时器/计数器 f:1个看门狗定时器 g:串行口 h:P0~P4 4个8位并行I/O口 i: 特殊功能寄存器(SFR)
2,有7中选址方式 a:寄存器寻址方式 b:直接寻址方式 c:寄存器间接寻址方式 d:立即数寻址方式 f:基址寄存器加变址寄存器间接寻址方式 g:相对寻址方式 h:位寻址方式
3,a:数据传送类指令 b:算数运算类指令 c:逻辑操作类指令 d:控制转移类指令 f:位操作类指令
4,产生中断的请求源称为中断源。
MCS----51中断系统共有5个中断请求源:(1)外部中断请求0,中断请求标志为IE0。(2)外部中断请求1,中断请求标志为IE1。(3)定时器/计数器T0溢出中断请求,中断请求标志为TF0。(4)定时器/计数器T1溢出中断请求,中断请求标志为TF1。(5)串行口中断请求,中断请求标志为TI或RI。特点:2个外部中断源,3个内部中断源。
5,:
方式0帧格式
D1 D2 D3 D4 D5 D6 D7 D0
方式0波特率=Fosc/12
方式1帧格式
D1 D2 D3 D4 D5 D6 D7 D0 停止位 起始位
方式1波特率=2SMOD定时器T1的溢出率/32
方式2和方式3帧格式
D1 D2 D3 D4 D5 D6 D7 D0 停止位 起始位 D8
方式2的波特率=2MOD*Fosc/64
方式3的波特率=2MOD *定时器T1的溢出率/32
(帧格式就这么看吧 图不好画)
6,有两个定时器/计数器 T0和T1; 都有定时器/ 计数器控制寄存器TCON和工作方式控制寄存器TMOD
7: a:总中断打开后(EA=1) b:该中断源发出中断请求,该中断源对应的中断请求标志位为1 C:该中断源的中断允许位为1 D:无同等级或更高级的中断正在被执行。
8,a:方式 0 :这种工作方式比较特殊,与常见的微型计算机的串行口不同,它又叫同步移位寄存器输出方式。在这种方式下,数据从 RXD 端串行输出或输入,同步信号从 TXD 端输出,波特率固定不变,为振荡率的 1/12 。该方式是以 8 位数据为一帧,没有起始位和停止位,先发送或接收最低位。 b:方式 2 :采用这种方式可接收或发送 11 位数据,以 11 位为一帧,比方式 1 增加了一个数据位,其余相同。第 9 个数据即 D8 位具有特别的用途,可以通过软件搂控制它,再加特殊功能寄存器 SCON 中的 SM2 位的配合,可使 MCS-51 单片机串行口适用于多机通信。方式 2 的波特率固定,只有两种选择,为振荡率的 1/64 或 1/32 ,可由 PCON 的最高位选择。 c:方式 3 :方式 3 与方式 2 完全类似,唯一的区别是方式 3 的小组特率是可变的。而帧格式与方式 2- 样为 11 位一帧。所以方式 3 也适合于多机通信。
9:a:单工 只能沿一个方向传输 不能反过来。b:半双工 是能沿两个方向传输 但是是分尸的。
c:全双工 同事进行双向传输。
10: 当中断请求源发出中断时,如果中断被允许的话,单片机暂时中止当前正在执行的主程序,转到中断处理程序处理中断服务请求。中断服务处理程序执行完后,再回到原来的断点,继续执行被中断的主程序。
(累死了*-*!)

阅读全文

与单片机高手在线解答相关的资料

热点内容
ubuntu1404安装php 浏览:628
lua能编译吗 浏览:106
思仙怎么看服务器 浏览:656
php微信图片防盗链 浏览:796
安卓1怎么读音 浏览:287
农业app怎么开通快捷支付 浏览:908
pythonredisdict 浏览:383
如何攻击别人网赌服务器 浏览:878
隐私与应用加密的图案密码 浏览:34
陈情令王一博解压 浏览:35
c编译器使用说明 浏览:705
郑州前端程序员私活有风险吗 浏览:14
小型螺杆机压缩机 浏览:518
成人解压最好的方法 浏览:50
最小制冷压缩机 浏览:490
xampp支持python 浏览:367
深圳周立功单片机 浏览:61
圆上点与点之间角度算法 浏览:869
怎么知道微信关联了哪些app 浏览:702
android事件驱动 浏览:888