文章目录:
实验要求

代码实现
#include "ioCC2530.h"
#define D5 P1_3
//系统时钟切换函数
void Set_Clock_32M()
{
CLKCONCMD &=~0x40;
while(CLKCONSTA &0X40)
{
}
CLKCONCMD &=~0x47;
}
//端口初始化函数
void Init_Prot()
{
//配置4个LED灯的引擎
//选择端口的功能
P1SEL &=~0x1B;//设置通用io端口
//配置端口的方向
P1DIR |=0x1B;
//关闭LED灯
P1 &=~0x1B;
}
//串口初始化函数
void Init_Uart0()
{
//1.设置串口的引脚功能,将P0_2和P0_3设置为外设功能
PERCFG &=~0X01;
P0SEL |=0x0C; //0000 1100
//2.设置串口的波特率:32M——9600
U0BAUD = 59;
U0GCR = 8;
//3.设置一个UART控制寄存器 U0UCR
U0UCR |=0x80;
//4.设置控制与状态寄存器 U0CSR
U0CSR |=0xc0; //1100 0000
}
//串口字节发送函数
void URD_SendByte(unsigned char dat)
{
U0DBUF =dat;//将要发送的数据填入发送缓存寄存器
while(UTX0IF==0);//等待数据发送完成
UTX0IF=0; //发送完成后将数据清零
}
//串口字符串发送函数
void URD_SendString(unsigned char *str)
{
while(*str !='\0')
{
URD_SendByte(*str++);
}
}
//看门狗的初始化函数:设置为定时器模式,时间周期1s
//初始化一个看门狗控制寄存器
void Init_WDT()
{
//配置WDTCTL
WDCTL = 0x0C;//0000 1100
//IEN2
IEN2 |= 0x20;
//打开使能总中断
EA=1;
}
//看门狗定时器1s的中断服务函数
#pragma vector = WDT_VECTOR //起始语句
//中断服务函数
__interrupt void Service_WDT()
{
//清除中断标指
WDTIF = 0;
D5=1;
//发送字符串
URD_SendString("hello word\r\n");
D5=0;
}
void main(void)
{
Set_Clock_32M();
//端口初始化
Init_Prot();
Init_Uart0();
Init_WDT();
while(1)
{
}
}
1246

被折叠的 条评论
为什么被折叠?



