51的1602移植到mega16上怎么就用不了?

2019-03-24 21:03发布

#define F_CPU 1000000UL
#include<avr/io.h>
#include<avr/interrupt.h>
#include<util/delay.h>
#define uchar unsigned char
#define uint unsigned int
//sbit rs=P2^4;
//sbit rw=P2^5;
//sbit e=P2^6; #define rs PC4
#define rw PC5
#define e PC6 #define rs_0() (PORTC&=~_BV(rs))
#define rs_1() (PORTC|=_BV(rs))
#define rw_0() (PORTC&=~_BV(rw))
#define rw_1() (PORTC|=_BV(rw))
#define e_0() (PORTC&=~_BV(e))
#define e_1() (PORTC|=_BV(e))   uchar table1[]="welcome to cctv ";
uchar table2[]="do anything";
uchar table[17];  
void write_com(uchar com)
{
 e_0();
 rs_0();
 rw_0();
 PORTA=com;
 _delay_us(500);
 e_1();
 _delay_us(1000);
 e_0();
 
} void write_date(uchar dat)
{
 e_0();
 rs_1();
 rw_0();
 PORTA=dat;
 _delay_us(500);
 e_1();
 _delay_us(1000);
 e_0();
} void init()
{
 DDRA=0XFF;PORTA=0XFF;
 DDRC=0XFF;PORTC=0XFF;
 _delay_ms(15);
 write_com(0x38);
 _delay_ms(5);
 write_com(0x38);
 _delay_ms(5);
 write_com(0x38);
 write_com(0x38);
 write_com(0x08);
 write_com(0x01);
 write_com(0x06);
 write_com(0x0c); 
 
}
int main()
{
 uchar j;
 init();
 write_com(0x80);
 for(j=0;j<16;j++)
 {
  table[j]=table2[j];
  write_date(table[j]);
  _delay_us(500);
  
 }
 write_com(0xc0);
 for(j=0;j<16;j++)
 {
  table[j]=table2[j];
  write_date(table[j]);
  _delay_us(500);
  
 }
 while(1);   
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
zhangdaoyu
1楼-- · 2019-03-25 05:18

看看时钟 它是不是超频了 这样的话 延时都变了

pengfeij
2楼-- · 2019-03-25 10:45
关掉熔丝位里JTAG功能,JTAG干扰PC口的正常操作。
chunyang
3楼-- · 2019-03-25 16:34
 精彩回答 2  元偷偷看……
springvirus
4楼-- · 2019-03-25 18:40
隐约记着JTAG功能是默认打开的,用那些io口作为普通输入输出时,把JTAG功能禁止掉

一周热门 更多>