MSP430--数字IO 流水灯程序
来源:互联网 发布:windows nt 5.x 6.x 编辑:程序博客网 时间:2024/06/05 06:00
1.数字IO共有6组,其中P1,P2可以设置外部中断。
2.通用寄存器:
PxIN,PxOUT,PxDIR,PxSEL
上电默认PxDIR为0,即默认为输入。PxSEL若为1,则表示数字IO用作外设功能,这时候P1或P2的中断功能丢失。
3.P1的寄存器:每个地址对应8位寄存器,对应IO的8个PIN.
026h P1SEL 025h P1IE: 中断使能 024h P1IES:中断响应上升沿变化(0),响应下降沿变化(1) 023h P1IFG:中断发生就置位为1,中断执行后要手动清除 022h P1DIR 021h P1OUT 020h P1IN read only
4.流水灯电路:P2端口输出低电平时二极管发光。P2DIR=0XF8,对应表示P27-P23均为输出,若这时P2OUT=0XFF,则L1-L5都会亮。
5.流水灯程序:实现流水灯以三种流动方式和四种流动速度的不同组合而进行点亮"流动"
#include <msp430x14x.h>typedef unsigned int uint;uint i = 0,j = 0,dir = 0;uint flag = 0,speed = 0; //flag--灯光流动方式,speed--灯光流动速度/****************主函数****************/void main(void){ /*给IO一个初始的状态*/ P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换 P5OUT &= ~BIT7; CCTL0 = CCIE; //使能CCR0中断 CCR0 = 50000; TACTL = TASSEL_2 + ID_3 + MC_1; //定时器A的时钟源选择SMCLK,增计数模式 P2DIR = 0xff; //设置P2口方向为输出 P2OUT = 0xff; _EINT(); //使能全局中断 LPM0; //CPU进入LPM0模式}/*******************************************函数名称:Timer_A 功 能:定时器A的中断服务函数,在这里通过标志 控制流水灯的流动方向和流动速度参 数:无返回值 :无********************************************/#pragma vector = TIMERA0_VECTOR__interrupt void Timer_A (void){ if(flag == 0) { P2OUT = ~(0x80>>(i++)); //灯的点亮顺序D8 -> D1 } else if(flag == 1) { P2OUT = ~(0x01<<(i++)); //灯的点亮顺序D1 -> D8 } else { if(dir) //灯的点亮顺序D8->D1,D1->D8,循环绕圈 { P2OUT = ~(0x80>>(i++)); } else { P2OUT = ~(0x01<<(i++)); } } if(i == 8) { i = 0; dir = ~dir; } j++; if(j == 40) //循环5次就改变flag改变流动方向 { i = 0; j = 0; flag++; if(flag == 4) flag = 0; switch(speed) { case 0: TACTL &=~ (ID0 + ID1); TACTL |= ID_3; break; case 1: TACTL &=~ (ID0 + ID1); TACTL |= ID_2; break; case 2: TACTL &=~ (ID0 + ID1); TACTL |= ID_1; break; case 3: TACTL &=~ (ID0 + ID1); TACTL |= ID_0; break; default: break; } if(flag != 3) speed++; if(speed == 4) speed = 0; } }
0 0
- MSP430--数字IO 流水灯程序
- MSP430流水灯Ⅰ
- MSP430流水灯Ⅱ
- STM32 IO 流水灯
- 流水灯的程序
- HT66FU50 流水灯程序
- 单片机流水灯程序
- 流水灯程序
- 单片机流水灯c程序
- 流水灯汇编语言小程序
- 流水灯程序的详解
- 裸机程序-led流水灯
- c语言流水灯程序
- 4.8 LED流水灯程序
- 51单片机流水灯程序
- s3c2440之IO口--流水灯(转载)
- s3c2440之IO口--流水灯
- TQ2440裸奔程序>>流水灯测试程序
- 数据抽取工具
- Android蓝牙开发(一):概况
- POJ 1258:Agri-Net(最小生成树&&prim)
- thread-mutex
- iphone真机上抓包和抓包工具汇总
- MSP430--数字IO 流水灯程序
- 钽电容和铝电解电容的区别
- NYOJ 22 素数求和问题
- item27:尽量少做转型动作
- 三个框架面试之Hibernate
- UVa 1153 Keep the Customer Satisfied 解题报告(贪心)
- JSP中get和post方法的区别
- memset
- Android蓝牙开发(三):操作步骤