1. 51单片机中断问题
PUSH和POP指令和中断并无直接关系,只是中断谁也不知道什么时候会发生 ,所以,为了方便起见,总是在中断一开始就用PUSH指令保护寄存器,称为保护现场,在中断结束的时候使用POP指令恢复现场,至于你到底使用不使用这两个指令和中断本身并无关联,
不使用这俩指令照样正常中断,正常返回,只不过你在中断前的寄存器值可能会被无意更改,造成麻烦.你说的不成对出现也是一样的道理,只进栈,不出栈,那你保护现场也没什么意义了,只出栈,不进站,那至于会出栈什么值,这个也无从得知,嗯,最好还是成对出现!
2. 单片机中AUXR是什么
单片机中AUXR是辅助寄存器。功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的辅助寄存器AUXR,需用n个触发器来构成。
辅助寄存器AUXR中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,或串行输入、并行输出,十分灵活,用途也很广。
(2)单片机auxr扩展阅读:
辅助寄存器AUXR具有接收数据、存放数据和输出数据的功能,它由触发器和门电路组成。只有得到“存入脉冲”(又称“存入指令”、“写入指令”)时,寄存器才能接收数据;在得到“读出”指令时,寄存器才将数据输出。
辅助寄存器AUXR存放数码的方式有并行和串行两种。并行方式是数码从各对应位输入端同时输入到寄存器中;串行方式是数码从一个输入端逐位输入到寄存器中。
辅助寄存器AUXR读出数码的方式也有并行和串行两种。在并行方式中,被读出的数码同时出现在各位的输出端上;在串行方式中,被读出的数码在一个输出端逐位出现。
3. AUXR1=BIN(100)什么意思
这应该是单片机程序编写中的一个语句。
作用是将二进制的100写入到AUXR1寄存器中。BIN()函数是一个转换函数、或者是带参数宏定义。
4. 单片机复位后各特殊功能寄存器的初始化状态是什么
首先单片机复位也分别几种:掉电再通电,按复位按钮,程序复位,通过外部接口复位。
各芯片的复位电路大同小异,这里以51系列单片机为例,上电后,保持RST一段高电平时间,就能达到上电复位的操作目的。
常见的复位电路如下:
1.掉电再通电,这里就视为冷启动吧
这种情况下单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,特殊功能寄存器复位后的状态为确定值,具体可参考相应单片机的说明书。
2.按复位按钮
这种情况下单片机的复位操作也会使程序计数器PC=0000H,程序重新从
0000H
地址执行,但是与第1种情况不同的是,片内RAM为复位前的状态值,也就是说,运行中的复位操作不改变片内RAM区中的内容。而特殊功能寄存器复位后的状态为确定值,具体可参考相应单片机的说明书。
51单片机复位后特殊功能寄存器的初始值
特殊功能寄存器
初始值
特殊功能寄存器
初始值
ACC
00H
TCON
00H
B
00H
TMOD
00H
PSW
00H
TL0
00H
SP
07H
TH0
00H
DPTR
0000H
TL1
00H
P0~P3
FFH
TH1
00H
PCON
0XXX
0000B
T2CON
00H
AUXR
XXX0
0XX0B
T2MOD
XXXX
XX00B
AUXR1
XXXX
XXX0B
RCAP2L
00H
IE
0X00
0000B
RCAP2H
00H
IP
XX00
0000B
TL2
00H
SCON
00H
TH2
00H
SBUF
XXXX
XXXXXB
WDTRST
XXXX
XXXXB
表中部分符号的含义如下:
PSW=00H:表明复位后自动选择第0组工作寄存器组为当前工作寄存器组
SP=07H:表明堆栈指针指向片内RAM07H单元,堆栈的压入操作为先加后压,所以第一个被压入的数据存放在08H单元中
P0~P3=FFH:表明各端口写入1,此时各端口既可作输入口,也可以作输出口
AUXR=XXX0
0XX0:表明ALE引脚在CPU不访问外部存储器期间有脉冲信号输出
AUXR1=XXXX
XXX0:表明选择DPTR0作数据指针
IE=00H:表明各中断均关闭
TCON=00H:表明T0,T1
均被停止
SCON=00H:表明串口处于方式0,允许发送,不允许接收
PCON=00H:表明SMOD=0,波特率不加倍。PD=0,IDL=0,单片机处于正常工作方式。
3.程序复位
这种情况下单片机的复位操作由程序内部控制,功能要视乎程序的编写。例如我们可以操作使程序计数器PC=0000H,同时
添加RAM初始化程序,清0或置1,同时设置某些特殊寄存器的值,或者其他操作,总之这是一种软件操控的复位,功能可灵活控制。
4.外部接口复位待研究。
P.S.
1.什么是冷启动?热启动呢?
冷启动就是在不加电的情况下启动系统,热启动就是在加电的情况下重启系统!
例子:
冷启动是之直接按下电源开关启动计算机。
热启动是之在已开机的状态下在开始菜单中选择重新启动计算机,这叫做热启动。
5. STC12C5624AD单片机怎样设置定时器工作在1T的模式下,我也声明了AUXR寄存器,但没反应,经测试还是12T的速
AUXR=0x40 T1为1T ,设置波特率时时这样设置的
6. STC11F02E 系列的单片机中AUXR1寄存器如何使用(用C语言怎么让AUXR1.7=1) 让串口从P3口切换到P1口,谢谢!
到官网上下载芯片使用手册
7. 单片机中 sfr AUXR=0X8E是什么意思
我是一名单片机工程师,对于什么是sfr,下面的讲解你参考一下。
sfr全称为:special function register(翻译为:特殊功能寄存器)
先了解什么是寄存器。
打个比喻。
单片机里面,共有两种寄存器,第一种是ROM,第二种是RAM。
1 ROM的功能:ROM的数据在程序运行的时候是不容改变的,除非你再次烧写程序,他就会改变,就像我们的书本,印上去就改不了了,除非再次印刷,这个就是ROM的原理。
2 RAM的功能:RAM就是在程序运行中,数据会随时改变的,就像我们的黑板,写上了可以擦,擦完再写上去,相当于程序运行的时候,调用ROM里面的数据进行各种运算。
再来了解如何为特殊功能
这个sfr是在RAM(动态寄存器)里面的,如何为特殊功能呢?
举一个非常简单的例子区别一下,比如:sfr P0 = 0x80;,把单片机地址0x80改名字为P0,因为0x80这个地址是连接着单片机外面的P0口的,为什么要改名字呢?就是方便我们记忆运用。
那如何为不特殊呢?就是除了sfr或者我们没有刻意定义名字的,就归为不特殊。
一个弄明白之后,
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr AUXR=0X8E
上面这些你就懂了,简单来了就是为RAM里面的地址改名字方便我们用。
其实这些东西你不用过于研究的,你了解一下就可以,因为我们在写程序中肯定有一个reg52.h的头文件,因为定义名字这个事情就在这个头文件里面了,你会调用就行,不用过于研究。
如果你想学习更多单片机和程序的知识,可以看看我整理好的“17个实验学会单片机”,网络一下“17个实验学会单片机”就可以看到在首页了。
关于尾声
学单片机靠的是坚持,不能三天打鱼两天晒网,只要坚持就会看到希望。如果不坚持,一辈子(100年)都学不会,如果坚持,一个月后你就会感觉到单片机迷人的一面了。加油,祝你成功!