在编(用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;
}
}
}
|