📄 sys_init.c
字号:
/*===============================================================================//
//== 文 件 名:Sys_Init.c
//== author :gnsusn
//== 说 明:
//== 修改日志:2008.7.14 创建文件
//==
//===============================================================================*/
#include <reg52.H>
//===============================================================================//
//== 函 数 名:Sys_Init
//== 功 能 :初始化单片机资源
//== 说 明 :
//== 时 间 :2008.7.14 创建函数
//== 入口参数:无
//== 返 回 值:
//===============================================================================//
unsigned char Sys_Init(void)
{
//== PCON: |SMOD| -- | -- | -- | GF1| GF0| PD | IDL| ::电源控制寄存器
//== : 1 0 0 0 0 0 0 0
//---------------------------------------------------
PCON |= 0x80; //== SMOD::波特率不加倍
//== GF1,GF0
//== PD::掉电模式
//== IDL::空闲模式
//== SCON: SM0 SM1 SM2 REN TB8 RB8 TI RI
//== : 0 1 0 1 0 0 0 0
//---------------------------------------------------
SCON |= 0x50; //== 串行口控制寄存器,方式1,允许RI中断
//== SM2: 多机通信控制位 =1时,如果RB8也等于1,则激发RI中断
//== _ _
//== TMOD: |GATE| C/T| M1 | M0 |GATE| C/T| M1 | M0 | ::定时器方式选择寄存器
//== : 0 0 1 0 0 0 0 1
//---------------------------------------------------
//== GATE=0用TR0和TR1来控制T1和T0的启动; GATE=1则用外部中断来控制
//== C/T为0表示定时器模式。为1表示计数器模式,对T0或T1的外部负跳变脉冲计数
TMOD |= 0x21; //== 定时器0:模式1,16位计数器; 模式0:13位计数器
//== 定时器1:模式2,自动重装载模式; 模式3:T0分为两个8位计数器,T1停止工作
TH1 = 0xfe; //== 自动重装值
TL1 = 0xfe; //== 11.0592MHz 波特率57600B/s
//== 波特率9600B/s 0xfa
//== 22.1184MHz 波特率 ff 115200
TH0 = 0x00; //== 定时器0的初始值
TL0 = 0x00;
//== IP: - - - PS PT1 PX1 PT0 PX0 :: 中断优先级控制寄存器
//== : 0 0 0 0 0 0 0 1 :: 中断可以被中断
//---------------------------------------------------
IP = 0x01; //== PS :: 串口中断优先级别
//== PT1:: 定时/计数器T1的中断优先级别
//== PX1:: 外部中断1的中断优先级别
//== PT0:: 定时/计数器T0的中断优先级别
//== PX0:: 外部中断0的中断优先级别
//== TCON: TF1 TR1 TF0 TR0 IE1 IE0 IT1 IT0 ::定时器控制寄存器
//== : 0 1 0 0 0 0 0 0
//---------------------------------------------------
TCON = 0x40; //== TF:: 计数器/定时器溢出中断标志,硬件置1,硬件清0(可软件清0)
//== TR:: 控制定时器的运行
//== IE:: 外部中断请求标志,1时执行中断,执行中断后硬件自动清0(硬件置1,硬件清0)
//== IT:: 外部中断类型控制位, 0:低电平时触发; 1:下降沿触发
//== IE: EA - ET2 ES ET1 EX1 ET0 EX0 ::中断允许控制寄存器 1:允许;0:禁止
//== : 1 0 1 0 0 0 0
//---------------------------------------------------
IE = 0x90; //== EA :: 总控制位
//== ET2:: T2中断控制位
//== ES :: 串口中断控制位
//== ET1:: T1中断控制位
//== EX1:: INT1中断控制位
//== ET0:: T0中断控制位
//== EX0:: INT0中断控制位
return 0; //== 成功返回
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -