open,close控制小灯亮灭

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验名称:open/close控制小灯亮灭

一.实验目的

通过该实验实习,进一步熟悉KDS嵌入式开发系统环境和C语言以及调试方式;加强串口通信(SCI)基本原理及编程原理;理解课本中的程序代码;分别运用查询方式、中断方式实现通信。

二.实验内容

通过串口调试器发送open/close控制小灯亮灭

三.实验过程

1.m ain.c函数

//说明见工程文件夹下的Doc文件夹内Readme.txt文件

//========================================================= #include "includes.h" //包含总头文件

int main(void)

{

//1. 声明主函数使用的变量

uint_32 mRuncount; //主循环计数器

//2. 关总中断

DISABLE_INTERRUPTS;

//3. 初始化外设模块

light_init(RUN_LIGHT_BLUE, LIGHT_OFF); //蓝灯初始化

light_init(RUN_LIGHT_RED, LIGHT_OFF); //蓝灯初始化

uart_init(UART_0,MCGIRCLK, 9600); //串口0时钟MCGIRCLK(4000Khz)

uart_init (UART_1,BUSCLK, 9600); //串口1、2使用总线时钟24000Khz

uart_init (UART_2,BUSCLK, 9600); //波特率使用9600

uart_send_string(UART_0, "Hello Uart_0!\r\n"); //串口发送初始化提示

uart_send_string(UART_1, "Hello Uart_1!\r\n");

uart_send_string(UART_2, "Hello Uart_2!\r\n");//只插了串口2,所以在串口调试器中只有Hello Uart_2!

//4. 给有关变量赋初值

mRuncount=0; //主循环计数器

//5. 使能模块中断

uart_enable_re_int(UART_0); //使能串口0接收中断

uart_enable_re_int(UART_1); //使能串口1接收中断

uart_enable_re_int(UART_2); //使能串口2接收中断

//6. 开总中断

ENABLE_INTERRUPTS;

//主循环开始============================================================= for(;;)

{

//运行指示灯(RUN_LIGHT)闪烁---------------------------------------------

mRuncount++; //主循环次数计数器+1

if (mRuncount >= RUN_COUNTER_MAX) //主循环次数计数器大于设定的宏常数

{

mRuncount=0; //主循环次数计数器清零

//light_change(RUN_LIGHT_BLUE); //蓝色运行指示灯(RUN_LIGHT_BLUE)状态变化

}

//以下加入用户程序-------------------------------------------------------- }//主循环end_for

//主循环结束============================================================= }

2.isr.c中的串口2接受中断服务例程

//串口2接收中断服务例程

void isr_uart2_re(void)//内部实现串口2接受字节,并返回字节

{

uint_8 ch;uint_8 ah;uint_8 bh;uint_8 dh;

uint_8 flag = 1;

DISABLE_INTERRUPTS;

ch = uart_re1(UART_2, &flag);//串口2接受一个字节,成功接受flag置0,失败flag置1

ah = uart_re1(UART_2, &flag);

bh = uart_re1(UART_2, &flag);

dh = uart_re1(UART_2, &flag);

if (0 == flag)

{

uart_send1(UART_2, ch);//MCU通过串口2发送一个字节

uart_send1(UART_2, ah);//MCU通过串口2发送一个字节

uart_send1(UART_2, bh);//MCU通过串口2发送一个字节

uart_send1(UART_2, dh);//MCU通过串口2发送一个字节

if('o' == ch &&'p' == ah && 'e' == bh && 'n' == dh)

light_control(RUN_LIGHT_BLUE,LIGHT_ON);

if('c' == ch &&'l' == ah && 'o' == bh && 's' == dh)

light_control(RUN_LIGHT_BLUE,LIGHT_OFF);

}

ENABLE_INTERRUPTS;

}

相关文档
最新文档