我用74hc595去点亮数码管 可是只能点亮一个好像在第一个子程序中没有出来是怎么回事
程序如下:#include <iom128v.h> //io端口寄存器配置文件,必须包含
#include<macros.h>
#include<stdio.h>
#include"xxh.c"
#define SET_HC595_latch (PORTE |= (1 << PE4))
#define CLR_HC595_latch (PORTE &= ~(1 << PE4))
#define SET_HC595_sclk (PORTE |= (1 << PE6))
#define CLR_HC595_sclk (PORTE &= ~(1 << PE6))
#define SET_HC595_data (PORTE |= (1 << PE2))
#define CLR_HC595_data (PORTE &= ~(1 << PE2))
//unsigned char Led_Disbuf[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //共阴极
unsigned char Led_Disbuf[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//共阳极
//unsigned char ComBuf[8] = {0,0,0,0,0,0,0,0};
unsigned char ComBuf[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//595端口初始化
unsigned char disbuf[8]={0,0,0,0,0,0,0,0};
unsigned char byte;
unsigned char duan;
unsigned char wei;
/***************************************************************************************************************************/
/*函数功能:单片机初始化
/*入口参数:
/*出口参数:
/***************************************************************************************************************************/
void HC595_port_init(void)
{
//PORTE&= 0b10101011;
//DDRE|= 0b01010100;//(1 << PE2) | (1 << PE4) | (1 << PE6) ;
}
/***************************************************************************************************************************/
/*函数功能:主函数
/*入口参数:
/*出口参数:
/***************************************************************************************************************************/
void dataout(unsigned char temp,unsigned char k)
{
unsigned char i,j;
PORTE&= 0b10101011;
DDRE|= 0b01010100;//(1 << PE2) | (1 << PE4) | (1 << PE6) ;
/*********************************************送段码*************************************************************************/
duan=Led_Disbuf[temp];
wei=ComBuf[k-1];
CLR_HC595_latch;
NOP();NOP();NOP();NOP();
for(i=0;i<8;i++)
{
CLR_HC595_sclk;
NOP();NOP();NOP();NOP();
if((duan&0x80)==0x80)
{
SET_HC595_data;
}
else
{
CLR_HC595_data;
}
duan<<=1;
SET_HC595_sclk;
NOP();NOP();NOP();NOP();
CLR_HC595_sclk;//HC595_clk=0;
}
/*********************************************送位选*************************************************************************/
for(i=0;i<8;i++)
{
CLR_HC595_sclk;
NOP();NOP();NOP();NOP();
if((wei&0x80)==0x80)
{
SET_HC595_data;
}
else
{
CLR_HC595_data;
}
wei<<=1;
SET_HC595_sclk;
NOP();NOP();NOP();NOP();
CLR_HC595_sclk;
}
/*********************************************并出显示*************************************************************************/
CLR_HC595_latch;
NOP();NOP();
SET_HC595_latch;
NOP();NOP();
CLR_HC595_latch;
}
void main(void)
{
dataout(3,3); //这里是为了在第三个数码管上显示3!成功显示了 但是好像根本没有执行下面那个程序
dataout(3,4); //这里是为了在第四个数码管上显示3!没有显示 好像根本没有执行这个个程序
}