传感器实验二 下载本文

传感器实验报告二

姓名 江璐 学号 1315212017 班级 电子二班 时间 2015.11.11 实验题目 CC2530基础实验

一:实验设备

1.硬件:教学实验箱、PC机。

2.软件:PC机操作系统Windows 98(2000、XP)+IAR开发环境。

3.实验必须连接好仿真器,通用调试母板,将通用调试母板串口和PC串口连接好。

二:实验

(一)外部中断实验

1.实验目的

(1)掌握CC2530的外部中断寄存设置。 (2)掌握外部中断函数程序的编程方法。

2.实验内容

在IAR集成开发环境中编写定时器中断程序。

3.相关电路图

当按键未按下时,PO.4的电平为3.3V;当按键按下时,PO.4的电平为0V。

4.程序

#include \

void delay(void) {

unsigned int i; unsigned char j; for(i=0;i<1500;i++) {

for(j=0;j<200;j++)

{

asm(\ asm(\ asm(\ } } }

#pragma vector=P0INT_VECTOR __interrupt void P0_INT(void){ if(P0IFG > 0){ P0IFG = 0; P0_0=~P0_0; P2_0=~P2_0; }

P0IFG = 0; }

void main( void ) {

P0DIR |= 0x01; //设置P0.0为输出方式;P0.4和P0.5为输入方式 P2DIR |= 0x01; //设置P2.0为输出方式 P0_0 = 1;

P2_0 = 1; //熄灭LED P0IEN = 0x10; PICTL = 0x11; P0IFG = 0; P0IE = 1; EA = 1; while(1);

} // end of main()

5.实验现象

第一次按下S1时D3和D2两个灯都亮,第二次按下的时候亮松手后灭,第三次按下的时候灯灭。

(二)UART串口实验

1.实验目的

(1)掌握CC2530的UART寄存设置。

(2)掌握UART串口中断函数程序的编程方法。

2.实验内容

在IAR集成开发环境中编写定时器中断程序。

3.相关电路图

4.程序

#include \char uart_buffer; void delay(void) {

unsigned int i; unsigned char j; for(i=0;i<1500;i++) {

for(j=0;j<200;j++) {

asm(\ asm(\ asm(\ } }

} void UartTX_Send_String(unsigned char *Data,int len) //串口发送函数 {

int j;

for(j=0;j

U0DBUF = *Data++; while(UTX0IF == 0); UTX0IF = 0; } }

void UartTX_Send_Data(unsigned char Data,int len) //串口发送函数 {

int j;

for(j=0;j

U0DBUF = Data; while(UTX0IF == 0); UTX0IF = 0; } }

#pragma vector=URX0_VECTOR //uart0中断函数 __interrupt void uart0(void){ URX0IF = 0; //清中断标志 P0_0=~P0_0;

uart_buffer = U0DBUF;

//UartTX_Send_String(\ UartTX_Send_Data(uart_buffer,1); }

void main( void ) {

unsigned char buf[8];

P0DIR |= 0x01; //设置P0.0为输出方式;P0.4和P0.5为输入方式 P2DIR |= 0x01; //设置P2.0为输出方式 P0_0 = 1;

P2_0 = 1; //熄灭LED

CLKCONCMD &= ~0x40; //选择32M晶振 while(!(SLEEPSTA & 0x40)); //等待XSOC稳定

CLKCONCMD = 0xb8; //TICHSPD 128分频,CLKSPD 不分频 SLEEPCMD |= 0x04; //关闭不用的RC 振荡器 PERCFG = 0x00; //位置1 P0 口 P0SEL = 0x3c; //P0 用作串口 U0CSR |= 0x80; //UART 方式 U0GCR |= 10; //baud_e = 10; U0BAUD |= 216; //波特率设为57600 UTX0IF = 1;

U0CSR |= 0X40; //允许接收

IEN0 |= 0x84; //开总中断,接收中断 buf[0] = '\\t'; while(1){ P2_0=~P2_0; delay();

if(uart_buffer == 0x01){

UartTX_Send_String(\ UartTX_Send_String(&buf[0],1); }

}

} // end of main()

5.实验现象