📄 tc35掉电.c
字号:
/*********************************************************************************
演示向串口发送数据。
使用外部11.0592MHZ晶振,通讯波特率115200,8位数据位,1位停止位,无奇偶校验
**********************************************************************************/
#include "config.h"
#define UART_BPS 9600
#define IGT (1<<22)
void DelayNS(uint32 dly)
{
uint32 i;
for(;dly>0;dly--)
for(i=0;i<50000;i++);
}
void UART0_Init(void)
{
uint16 Fdiv;
U0LCR=0x83; //DLAB=1,允许设置波特率,即使能访问除数锁存
Fdiv=(Fpclk/16)/UART_BPS; //设置串口波特率(U0DLM,U0DLL)
U0DLM=Fdiv/256;
U0DLL=Fdiv%256;
U0LCR=0x03; //DLAB=0,(在该条件下,才可以访问U0RBR和U0THR寄存器)
}
void UART0_SendByte(uint8 dat)
{
U0THR=dat; //发送数据,将数据存入发送保持寄存器中
while((U0LSR&0x40)==0); //等待数据发送完毕(即判断线状态寄存器U0LSR第6位发送器TEMT是否为空,为空时TEMT置位)
}
void UART0_SendStr(uint8 const *str)
{
while(1)
{
if(*str=='\0') break; //判断数据是否发送完毕
UART0_SendByte(*str++);
}
}
int main(void)
{
uint8 SEND_STRING1[] = "AT\r\n";
uint8 SEND_STRING2[] = "AT+CMGF=1\r\n";
uint8 SEND_STRING3[] = "AT+CMGS=13759898470\r\n";
// uint8 SEND_STRING5[] = "qyqy244.9cm 2004.02.19/13:32:43qwqw\r\n";
uint8 SEND_STRING4[] = " ok! \x01A\0";
PINSEL0=0x00000005; //设置P0.0和P0.1连接串口UART0
PINSEL1=0x00000001; //设置P0.16连接外部中断EINT0
IO0DIR=IGT;
IO0SET=IGT;
IO0CLR=IGT;
DelayNS(150);
IO0SET=IGT;
DelayNS(5000);
EXTWAKE=0x01; //外部中断0唤醒芯片
EXTINT=0x01; //清除EINT0中断标志
while(1)
{
PCONP=0x00; //关闭定时器、RTC和UART等功能部件
PCON=0x02; //系统进入掉电模式
/* 系统唤醒后*/
PLLCON=0x01;
PLLFEED=0xaa;
PLLFEED=0x55;
while(PLLSTAT&(1<<10)==0);
PLLCON=0x03;
PLLFEED=0xaa;
PLLFEED=0x55; //重新使能PLL
UART0_Init(); //串口初始化
DelayNS(50);
UART0_SendStr(SEND_STRING1); //发送数据
DelayNS(50);
UART0_SendStr(SEND_STRING2); //发送数据
DelayNS(50);
UART0_SendStr(SEND_STRING3); //发送数据
DelayNS(50);
UART0_SendStr(SEND_STRING4); //发送数据
DelayNS(50);
EXTINT=0x01;
}
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -