|
#include<iom48v.h>
#include<macros.h>
#define uchar unsigned char
#define uint unsigned int
uchar num=0;
//#pragma abs_address:0xfd8 //从0xxxx处开始分配地址 此行不对
uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,//共阳极数码管的段选
0x80,0x90,0x88,0x83,0xc6,0x98,0x86,0x8e};
//#pragma end_abs_address //回复正常的浮动定位 此行不对
void display(uchar shu1,uchar shu2,uchar shu3,uchar shu4);
void delay(uchar z);
void USART_init();
#pragma interrupt_handler shou:19
void main()
{
USART_init();
while(1)
{
display(num,num,num,num);
}
}
void display(uchar shu1,uchar shu2,uchar shu3,uchar shu4)
{
DDRC=0XFF;
PORTC=0X00;
DDRB=0XFF;
PORTB=0Xff;
PORTC|=BIT(1);
PORTB=table[shu1];
delay(50);
PORTC&=~BIT(1);
PORTB=0Xff;
PORTC|=BIT(2);
PORTB=table[shu2];
delay(50);
PORTC&=~BIT(2);
PORTB=0Xff;
PORTC|=BIT(4);
PORTB=table[shu3];
delay(50);
PORTC&=~BIT(4);
PORTB=0Xff;
PORTC|=BIT(5);
PORTB=table[shu4];
delay(50);
}
void delay(uchar z)
{
uchar i,j;
for(i=z;i>0;i--)
for(j=1141;j>0;j--);
}
void USART_init()
{
SEI();
UCSR0A=0X00;
UCSR0C=0X06;
UBRR0H=0X00;
UBRR0L=51;
UCSR0B=0X98;
}
void shou()
{
num=UDR0;
UDR0=num;
}
为什么用16进制发送如果发01收到的总是81,每次发送都是这样,收的时候前面的0会变为8 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|