在编(用HC595和LS164驱动7位数码管)程序时要将1字节的数据转成串行从1个PGIO输出时用DrvGPIO_ClrBit(E_GPA,2)和DrvGPIO_SetBit(E_GPA,2)库函数置位,觉不够直观现改成以下,请各们高手拍砖......
- //基于NUC120学习套件 PGIO置位的一点改进
- //作者:hzy41y
- //最后更新日期2012年06月17日21:35
- #include <stdio.h>
- #include "NUC1xx.h"
- #include "DrvGPIO.h"
- #include "DrvSYS.h"
- #include "hzy.h"
- #define LED_clr DrvGPIO_ClrBit(E_GPA,2)
- #define LED_set DrvGPIO_SetBit(E_GPA,2)
- #define LED PA->pin2 //改进处
- int main (void)
- { static uint8_t bssgs,i;
- UNLOCKREG(); // 芯片注册解锁
- SYSCLK->PWRCON.XTL12M_EN = 1; // 设定12M外部晶振
- DrvSYS_Delay(5000); // 等待时钟就绪
- DrvGPIO_Open( E_GPA, 2, E_IO_OUTPUT );
- LED_clr;
- LED_set;
- LED=0; //改进后
- LED=1;
- while(1)
- { //------用以下方式不够精简--------------
- bssgs=0xaa;
- for(i=0;i<7;i++)
- { if(bssgs>>7)LED_set;
- else LED_clr;
- bssgs<<=1;
- }
- //-------改进后------------
- bssgs=0xaa;
- for(i=0;i<7;i++)
- { LED=bssgs>>7;
- bssgs<<=1;
- }
- }
- }
|