导航:首页 > 操作系统 > 单片机scon寄存器

单片机scon寄存器

发布时间:2024-07-06 00:10:16

1. 单片机中特殊功能寄存器的定义与初始化的区别

这两者的区别大了呀。。。
SCON寄存器在单片机中的地址是0x98...
sfr
SCON=ox98,是一个特殊寄存器的定义,也就是告诉你SCON的地址是0x98.当然这个是你目前不用考虑的。因为头文件(reg52.H等,就是在编写程序开头写的那个)都已经写好了。可以打开keil->c51->ASM->reg52.INC查看。。里面都是寄存器的定义。
SCON=0x52。。首先SCON寄存器的标志位有:
SM0,SM1,SM2,REN,TB8,RB8,TI,RI.
SCON=0X52,其实就是定好标志位的值。相当于:
SM0=0;
SM1=1;
SM2=1;
REN=0;
TB8=0;
RB8=0;
TI=1;
RI=0;
也可以写成上述形式,因为SCON地址可以被8整除(凡是地址可以被8整除的都可以位寻址),可以位寻址(即可以一个个位的赋值)
希望采纳,如有不懂,可以HI我。。。

2. 要设置51系列单片机串口工作于所需工作方式,应是对哪个专用寄存器进行操作

控制51单片机串行口的控制寄存器共有两个:特殊功能寄存器SCON和PCON。下面对这两个寄存器各个位的功能予以详细介绍。

1.串行口控制寄存器SCON

串行口控制寄存器SCON的格式如表4.4:

SM0、SM1:串行口4种工作方式的选择位。

SM2:允许方式2和3的多机通讯控制位。在方式2或3中,如果SM2置为l,则接收到的第9位数据(RB8)为0时不激活RI。在方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI。在方式0时,SM2必须清0。

REN:允许串行接收位。由软件置1或清0。REN=l允许接收,REN=O则禁止接收。

TB8:是工作在方式2和3时,要发送的第9位数据。需要时由软件置1或清0。在许多的通讯协议中该位是奇偶校验垃。在多机通讯中用来表示是地址帧或是数据帧,TB8=1为地址帧,TB8=0为数据帧。

RB8:当工作在方式2和3时,为接收到的第9位数据。在多机通讯中为地址帧或数据帧的标识位。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。

D7 D6 D5 D4 D3 D2 D1 D0

SM0 SM1 SM2 REN TB8 RB8 TI RI

T1:发送中断标志位,在方式O串行发送第8位数据结束时由硬件置1,或在其它方式串行发送停止位的开始时置1。TI=1时,申请中断,CPU响应中断后,发送下一帧数据。TI必须由软件清0。 表4.4 串行口控制寄存器SCON的格式

RI:接收中断标志位,在方式O串行接收到第8位数据结束时,由硬件置1。在其它方式中,串行接收到停止位的中间点时置1。RI=1时申请中断,要求CPU取走数据。但在方式1中,SM2=1时,若未收到有效的停止位,不会对RI置1。RI必须由软件清0。

SCON的所有位都能由软件清0。

2.特殊功能寄存器PCON

特殊功能寄存器PCON没有位寻址功能。PCON的格式如表4.5:

表4.5 特殊功能寄存器PCON的格式

D7 D6 D5 D4 D3 D2 D1 D0

SMON × × × × × × ×

SMOD:波特率系数选择位。

3.串行口工作方式

方式0:8位移位寄存器输入/输出方式。在扩展I/O端口外接移位寄存器时常用,其波特率固定为Fosc/12, Fosc为时钟频率;

方式1:10位异步通信方式。其中1个起始位,8个数据位和一个停止位,其波特率计算公式为:波特率=2的SMOD次方/32*(定时器T1的溢出率);

方式2,3:11位异步通信方式,其中一个起始位,8个数据位,1个附加的第9位和1个停止位,方式2和方式3仅只有波特率不同,方式2的波特率=2的SMOD次方/64*Fosc,方式3的波特率=2的SMOD次方/32*(定时器T1的溢出率)。

此次系统串行口工作方式是:01。

SM0、SM1两位为01时,串行口以方式1上作,方式1时串行口被控制为波特率可变的8位异步通讯接口。方式1的波特彩由下式确定:

方式l波特率=2的(SMOD-5)次方*定时器1的溢出率

式中SMOD为PCON寄存器的最高位的值(0或1)。

因为串行口用于连接打印机,所以这里只介绍串行口输出情况。

串行口以方式1输出时,数据位由TXD端输出,发送—帧信息为10位,1位起始位0,8位数据位(先低位)和1位停止位1,CPU执行一条数据写发送缓冲器SBUF的指令,就启动发送。当发送完数据位,置“1”中断标志TI。

3. 单片机scon=0x00是什么意思呀

SCON是个寄存器,用于串行通讯的控制。SCON=0X00中的八位分别为SM0 SM1 SM2 REN TB8 RB8 TI RI (从左到有排列)。若为0X00时,既把它们的值都为0,选择方式0。若为0X80既SMO为1其它为0,选择工作方式1。通过“赋值”的方式选择地址(SM0 SM1 SM2 REN TB8 RB8 TI RI )而控制不同的功能。

4. 瑕佽剧疆51绯诲垪鍗旷墖链轰覆鍙e伐浣滀簬镓闇宸ヤ綔鏂瑰纺,搴旀槸瀵瑰摢涓涓撶敤瀵勫瓨鍣ㄨ繘琛屾搷浣

1. 鏁版嵁缂揿啿瀵勫瓨鍣⊿BUF
SBUF 鏄鍙浠ョ洿鎺ュ诲潃镄勪笓鐢ㄥ瘎瀛桦櫒銆傜墿鐞嗕笂锛屽畠瀵瑰簲镌涓や釜瀵勫瓨鍣锛屽嵆涓涓鍙戦佸瘎瀛
鍣ㄤ竴涓鎺ユ敹瀵勫瓨鍣锛孋PU 鍐橲BUF 灏辨槸淇鏀瑰彂阃佸瘎瀛桦櫒锛涜籗BUF 灏辨槸璇绘帴鏀跺瘎瀛桦櫒銆傛帴
鏀跺櫒鏄鍙岀紦鍐茬殑锛屼互阆垮厤鍦ㄦ帴鏀朵笅涓甯ф暟鎹涔嫔墠锛孋PU 链鑳藉强镞剁殑鍝嶅簲鎺ユ敹鍣ㄧ殑涓鏂锛屾病
链夋妸涓娄竴甯х殑鏁版嵁璇昏蛋钥屼骇鐢熶袱甯ф暟鎹閲嶅彔镄勯梾棰樸傚逛簬鍙戦佸櫒锛屼负浜嗕缭鎸佹渶澶х殑浼犺緭阃熺巼锛
涓鑸涓嶉渶瑕佸弻缂揿啿锛屽洜涓哄彂阃佹椂CPU 鏄涓诲姩镄勶纴涓崭细浜х敓閲嶅彔闂棰樸
2. 鐘舵佹带鍒跺瘎瀛桦櫒SCON
SCON 鏄涓涓阃愪綅瀹氢箟镄8 浣嶅瘎瀛桦櫒锛岀敤浜庢带鍒朵覆琛岄氢俊镄勬柟寮忛夋嫨銆佹帴鏀跺拰鍙戦侊纴鎸
绀轰覆鍙g殑鐘舵侊纴SCON 鍗冲彲浠ュ瓧鑺傚诲潃涔熷彲浠ヤ綅瀵诲潃锛屽瓧鑺傚湴鍧98H锛屽湴鍧浣崭负98H~9FH銆
3. 鎺у埗瀵勫瓨鍣≒CON
鎺у埗瀵勫瓨鍣≒CON 涔熸槸涓涓阃愪綅瀹氢箟镄8 浣嶅瘎瀛桦櫒锛屼粎链楂树綅SMOD 涓庝覆鍙g殑鎺у埗链夊叧銆係MOD 鏄涓茶岄氢俊娉㈢壒鐜囩郴鏁版带鍒朵綅锛屽綋涓插彛宸ヤ綔鍦ㄥ伐浣沧柟寮1銆2 镞讹纴鑻ヤ娇鐢
T1 浣滀负娉㈢壒鐜囧彂鐢熷櫒鍏禨MOD=1 鍒欐尝鐗圭巼锷犲 銆
鍒濆嫔寲绀轰緥
void _init(void)
{
TMOD = 0x20; //瀹氭椂鍣═1瀹氢箟涓烘ā寮2
TL1 = 0xFD; TH1 = 0xFD; //璁剧疆娉㈢壒鐜囦负9600bps
PCON = 0x00; //SMOD=0
SCON = 0x70; //SM0,SM1=01--阃夋嫨宸ヤ綔鏂瑰纺1
//SM2=1--澶氭満鎺у埗浣岖疆1
//REN=1锛嶏紞绂佹㈡帴鏀
//TB8=0锛嶏紞姝ゆ柟寮忔棤瑕佸彂阃佺9浣嶆暟鎹
//RB8=0锛嶏紞姝ゆ柟寮忔棤鎺ユ敹鍒扮殑绗9浣嶆暟鎹
//TI=0锛嶏紞鍙戦佷腑鏂镙囧织娓0
//RI=0锛嶏紞鎺ユ敹涓鏂镙囧织娓0
TR1 = 1; //钖锷ㄥ畾镞跺櫒T1
}

阅读全文

与单片机scon寄存器相关的资料

热点内容
用星星纸折解压球 浏览:849
android动态时钟 浏览:520
mapreducepdf 浏览:146
新来程序员小哥哥太帅 浏览:52
nodejs和php性能 浏览:646
魅蓝手机怎么禁止流量下载app 浏览:8
女人体写生入门pdf 浏览:771
那些老程序员去哪了 浏览:941
java运行win10 浏览:344
男生程序员的性格 浏览:374
pythontornadohtml 浏览:326
使用命令可以查看全局路由表 浏览:287
对方离线状态怎么发送文件夹 浏览:547
qt编译的dll没有lib 浏览:930
光遇安卓买号怎么上号 浏览:731
imap服务器怎么填写苹果自带邮箱 浏览:707
玛氏程序员 浏览:612
整式运算法则八年级 浏览:949
行政公文写作中的命令 浏览:396
安卓代码反编译保护 浏览:821