⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a__.c

📁 AVR驱动320240LCM的的控制器
💻 C
字号:
/*---------------------------------*/
/*
星期日 2004年9月19日 
电启动
CPU:atmel mage64 ,8m内置RC,定时器10msS中断一次   
字库用熊政,字模提取程序,v5.44,排序方式,编码3,垂直翻转,0显示
*/
/*---------------------------------*/
//头文件
#include <mega64.h>   
//  
//IO方向
#define cprotb 0b1111110
#define cprotc 0b0011111
#define cportd 0x0	
//清0和置1
#define set_0 0b00000001 
#define set_1 0b00000010
#define set_2 0b00000100 
#define set_3 0b00001000 
#define set_4 0b00010000 
#define set_5 0b00100000
#define set_6 0b01000000 
#define set_7 0b10000000 
#define clr_0 0b11111110 
#define clr_1 0b11111101 
#define clr_2 0b11111011 
#define clr_3 0b11110111
#define clr_4 0b11101111 
#define clr_5 0b11011111 
#define clr_6 0b10111111 
#define clr_7 0b01111111   
void timer0_init(void);
void xtsz(); 
void clrwdt();
unsigned char X_ADDR @0b0100000000000000;
unsigned char Y_ADDR @0b0101000000000000;
unsigned char  CMD @0b0110000000000000;
unsigned char  DAT @0b0111000000000000; 
unsigned char gg = 0;
main()
{
	unsigned char x, y,b; 
	SPH = 0XF;
	SPL = 0XFF;  
		timer0_init();
			xtsz(); 
			CMD = 0x04;//0000_0100
		//inc_dir=0: X加1
		// /dispoff=1:正常显示
		//p_wr=0;p_disp=0;读写与显示都为页0  
		for ( y=0; y<=240; y++ )
		{
			X_ADDR = 0;
			Y_ADDR = y; 
			clrwdt(); 
			for( x= 0; x<=39; x++)
			{ 
				DAT = 0;
			}
		}   
	while(1)
	{
		xtsz(); 
		clrwdt(); 
		gg = 0;
		CMD = 0x04;//0000_0100
		for ( y=0; y<=240; y++ )
		{
			X_ADDR = 0;
			Y_ADDR = y;  
			clrwdt();
			for( x= 0; x<=39; x++)
			{ 
				b = DAT;
		   		switch(b)
		   		{
		   			case 0:
		   			b = 0x80;
		   			break; 
		   			case 0x80:
		   			b = 0xc0;
		   			break;
		   			case 0xc0: 
		   			b = 0xe0;
		   			break;
		   			case 0xe0:
		   			b = 0xf0;
		   			break;
		   			case 0xf0:
		   			b = 0xf8;
		   			break; 
		   			case 0xf8:
		   			b = 0xfc;
		   			break;
		   			case 0xfc:
		   			b = 0xfe;
		   			break;
		   		 	case 0xfe:
		   			b = 0xff;
		   			break; 
		   		 	case 0xff:
		   			b = 0x0;
		   			break;
		   			default:b = 0;
		   			break;
		   		}
		   		X_ADDR = x;
				Y_ADDR = y;
				DAT = b;
			}
		}   
	}
}
void xtsz() 
{
MCUCR = 0x80;
 EICRA = 0x00; //extended ext ints
 EICRB = 0x00; //extended ext ints
 EIMSK = 0x00;
 TIMSK = 0x01; //timer interrupt sources
 ETIMSK = 0x00; //extended timer interrupt sources 
  #asm("sei"); 
 }
void timer0_init(void)
{
 TCCR0 = 0x00; //stop
 ASSR  = 0x00; //set async mode
 TCNT0 = 0xB2; //set count
 OCR0  = 0x4E;
 TCCR0 = 0x05; //start timer
}  
unsigned int ff; 

interrupt [TIM0_OVF] void TIM0_OVF_overflow()  //定时器1 捕获处理
{
 TCNT0 = 0xB2; //reload counter value 
 ++gg; 
 if(ff == 0)  
 {
 	ff= 1000;
 	DDRB = 0X00000001; 
 	PORTB.0 = ~PORTB.0; 
}
else
{   
	--ff;
}
} 
/*
清看门狗
*/
/*---------------------------------*/
void clrwdt()
{     
	#asm("wdr");
}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -