[资料分享] CC2530通用I/O

Jacktang   2020-11-5 21:19 楼主

PxSEL寄存器用来设置端口为通用IO还是外设IO,0为通用IO、1为外设IO,默认为通用IO。

PxDIR寄存器用来设置端口为输入还是输出,0为输入、1为输出,默认为输入。

在输入模式下,PxINP寄存器用来设置端口为上拉/下拉或三态,0为上拉 /下拉、1为三态,默认为上拉/下拉。P2INP bit5-7表示端口组0-2上拉或下拉,0为上拉、1为下拉,默认为上拉。

在输入模式下,可以用于产生中断,EA位用来表示总中断,0表示禁止、1表示中断。

IENx寄存器中PxIE位用来设置端口组中断,0表示禁止、1表示中断。

PxIEN寄存器用来设置端口中断,0表示禁止、1表示中断。

PICTL寄存器中PxICON位用来设置端口中断触发,0表示上升沿、1表示下降沿。
PxIFG寄存器用来表示端口中断状态,1表示产生中断。
PxIF位用来表示端口组中断状态,1表示产生中断。

例:1.配置P0_1为输出
          P0SEL &= 0xFD;    //设置P0_1为普通IO口
          P0DIR |= 0x02;       //设置P0_1为输出

        2.配置P0_5为上拉输入
           P0SEL &= 0xDF;    //设置P0_1为普通IO口
           P0DIR &= 0xDF;    //设置P0_1为输入
           P0INP &= 0xDF;    //设置P0_1为上拉/下拉
           P2INP &= 0xDF;    //设置P0为上拉

        3.配置P2_0为中断
           P2SEL &= 0xFE;    //设置P2_0为普通IO口
           P2DIR &= 0xFE;    //设置P2_0为输入
           EA = 1;                   //打开总中断
           IEN2 |= 0x02;         //打开P2中断
           P2IEN |= 0x01;      //打开P2_0中断
           PICTL = 1;             //下降沿触发
           P2IFG &= 0xFE;    //清除P2_0中断状态
           P2IF = 0;               //清除P2中断状态

        4.P2_0中断函数
           #pragma vector = P2INT_VECTOR    //P2中断向量
           __interrupt void io_req()
           {
               if((P2IFG & 0x01) == 0x01)    //P2_0发生中断
               {
                   ;    //P2_0中断处理代码
               }
               P2IFG &= 0xFE;    //清除P2_0中断状态
               P2IF = 0;    //清除P2中断状态
           }

 

本帖最后由 Jacktang 于 2020-11-5 21:30 编辑

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复