|
楼主 |
发表于 2013-8-21 11:28:50
|
显示全部楼层
liudingding 发表于 2013-8-21 10:33
楼主是新手,给提个醒,M64出厂熔丝设置是兼容M103,要改为非兼容,否则单片机工作不正常 ...
大师,熔丝位我改了非兼容模式,上面的三个void main(void)的测试也测试正常
#include <iom64v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#define RS_ON PORTC|=(1<<0);
#define RW_ON PORTC|=(1<<1);
#define EN_ON PORTC|=(1<<2);
#define RS_OFF PORTC&=~(1<<0);
#define RW_OFF PORTC&=~(1<<1);
#define EN_OFF PORTC&=~(1<<2);
void delay(void)
{
unsigned int x,y,w;
for(w=0;w<=300;w++)
for(x=1;x>0;x--)
for(y=1;y>0;y--);
}
//一、写指令函数
void write_command(unsigned char com)
{
RS_OFF;
// RW_OFF;
PORTB=com;
delay();
EN_ON;
EN_OFF;
}
//二、写数据函数(四线模式数据要分两次写)
void write_data(unsigned char data)
{
RS_ON;
// RW_OFF;
PORTB=data;
delay();
EN_ON;
EN_OFF;
}
//三、初始化LCD1602函数
void LCD_init(void)
{
RW_OFF;
write_command(0x38); //设置16X2显示,5X2点阵,8位数据接口
write_command(0x0f); //开显示,显示光标,光标闪烁
write_command(0x06); //写一字后地址加一,光标加一
write_command(0X01);
write_command(0X80);
}
void main(void)
{
DDRA=0XFF;
DDRC=0XFF;
PORTA=0X55;
LCD_init();
while(1);
}
这个main测出的PORTA是0x55,PORTA最先得到的是0x55后LCD_init()里边最后一个函数是write_command(0X80);PORTA测出来应该是0x80才对啊。
void main(void)
{
DDRA=0XFF;
DDRC=0XFF;
LCD_init();
PORTA=0X55;
while(1);
}
这个main测出来的却是0x00;
请问这是什么问题呢?
现在我的熔丝位是:掉电2.7V;使能掉电检测;内部8M,65ms启动;使能ISP编程;Boot区大小4096;无加密;SPM/LPM访问无限制;允许SPM/LPM访问Boot区;
还有其它熔丝位要改的吗?或者是其它的问题。 |
|