历史上的今天
今天是:2024年10月14日(星期一)
2019年10月14日 | MSP430--数字IO 流水灯程序
2019-10-14 来源:eefocus
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 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; } }
上一篇:MSP430--看门狗定时器
史海拾趣
|
目前使用STC的90C51在帮客户开发 http://stcmcu.com/stc-mcu-select-1.htm 直接找深圳拿货$ 2.9 这颗IC 比一般传统89C51多了4个IO 复位脚还能当特殊扩展口用 , 开发起来也方便另外有些特殊案子需要较大内部 EEPROM 纪录系统字据客户代码也杂 -- 绝 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:37 编辑 /***************************************************** 本程序的目标是这样的: 1:不使用INTn中断功能,按键接在普通IO上 2:由定时器T/C2每隔一段时间检测按键一次, 并具有防抖动功能 3:每点击按 ...… 查看全部问答> |
|
电工测量与电测仪表--很基础很实用的好书 序言 前言 第一章 电测技术基础 第一节 测量的定义和分类 第二节 测量误差 第三节 电测仪表的分类 第三节 电测仪表的主要技术指标 第二章 电气测量指示仪表 第一节 电气测量指示仪表的概念和分 ...… 查看全部问答> |
|
资料说, PowerPC用的是RISC指令集. 我有点疑惑: 硬件上跑的是二进制, 我汇编是RISC还是CISC有关系吗? 只要编译器能正确地编译成PowerPC可以执行的机器码不就可以了吗?… 查看全部问答> |
|
我的平台是PXA270+Wince5.0 现在LCD的显示比较奇怪,刚进入系统的时候,主画面的显示还算正常,但是一切换画面,屏幕就会局部或者部分发白。 比方说,打开IE,屏幕就会整个发白,字体看不太清楚。 打开控制面板,屏幕会变成一条一条的,什么字都 ...… 查看全部问答> |
|
今天我终于焊接完成了我的应急灯.它也终于发出了极其微弱的光.非但起不到应急照明的目的.你不仔细看都不知道它是否在发光.从4个月前,开始申请美信的样片,我反复申请了2次.等了2个月才拿到这样的劣质样片.至此我算是了解了美信公司的服务质量和产品 ...… 查看全部问答> |
|
各位FPGA论坛的大虾: 为了方便大虾和后来者使用,学习和共享. 我呼吁大家把已经经过验证的FPGA 模块 整理成册, 分享到论坛给使用! &n ...… 查看全部问答> |




