本帖最后由 774338900 于 2016-8-3 23:20 编辑
用的是mega128.然后我现在就只想实现数码管的静态显示。。可是下面的代码却实现不了。。
#include"iom128v.h"
#include"macros.h"//注意bit函数的使用
#define SRCLK_H PORTB|=BIT(1)//数据串入
#define SRCLK_L PORTB&=~BIT(1)
#define SER_H PORTB|=BIT(2)//数据准备
#define SER_L PORTB&=~BIT(2)
#define RCLK_H PORTB|=BIT(0)//锁存
#define RCLK_L PORTB&=~BIT(0)
const unsigned char DisTab[]={0x3F,0x06,0x5B,0x4F,0x66, //0,1,2,3,4
0x6D,0x7D,0x07,0x7F,0x6F, //5,6,7,8,9
0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};
void delay(unsigned int i)//i过大浮点型长度不够??
{
unsigned int n;
for(n=0;n<i;n++)
{
NOP();
}
}
void get_595(unsigned char a)//利用PB2口将数据串入595
{
unsigned char b,i;
PORTC=~BIT(7);
DDRC=BIT(7);
PORTB&=~BIT(3);
PORTB|=BIT(3);//PB3=1
DDRB=0XFF;
RCLK_L;
for(i=0;i<8;i++)
{
if(a&0x80)
SER_H;
else
SER_L;
SRCLK_L;
delay(10);//保证有沿
SRCLK_H;
a=a<<1;
}
delay(10);
RCLK_H;
}
void dis_595()
{
PORTB|=0X80;
}
void main()
{
DDRA=0X00;
PORTA=0XFF;
DDRF=0X00;
PORTF=0XFF;
DDRE=BIT(2);
PORTE=0XFF;
DDRD=0X00;
PORTD=0X00;
DDRB=0X00;
PORTB=0X0F;
DDRC=0X00;
PORTC=0XFF;//端口初始化
get_595(DisTab[5]);
dis_595();
while(1);
}
而且在win8上一用jtag仿真运行这个程序= =就蓝屏了。。真心求解释。
|