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

📄 12128ma.c

📁 点阵液晶12*128驱动
💻 C
字号:
/* 
 *	(c) Copyright Alfred & Associates Inc.  1995, 
 *	All rights reserved. 
 */
/* sample1.c:  C-51 Compiler Sample Program */
 
#include <memmod.h>

#include <reg51.h>			/* define 8051 registers */
#include <stdio.h>			/* define I/O functions */
#include <ctype.h>		
#include <string.h>
#include <error.h>
#include <monitor.h>
#include <cc8255.h>
#include <absacc.h>
#include <serial.h>

extern int getnumber ();
extern output (int);

extern unsigned char in_queue_data[255];

char buf[16];
char temp[6];
unsigned int msec;
unsigned char intcycle;

unsigned char hour;
unsigned char min;
unsigned char sec;

void main ( void ) 
{
/* HD44780 */
/*	int i;
	for(;;)
	{
	write_character();	
	for (i=0; i<64000; i++)
	{}

	write_alt_1();
	for (i=0; i<64000; i++)
	{}

	write_alt_2();
	for (i=0; i<64000; i++)
	{}

	write_all();
	for (i=0; i<64000; i++)
	{}
	write_clear();
	for (i=0; i<64000; i++)
	{}
	}
*/
	int i,j;
	for(;;)
	{
	horizontal_1();
	for (i=0; i<64000; i++)
	{j=0;}
	vertical_1();
	for (i=0; i<64000; i++)
	{j=0;}
	checker_1();
	for (i=0; i<64000; i++)
	{j=0;}
	write_bmp();
	for (i=0; i<10; i++)
	{for (j=0; j<64000; j++);}

	write_bmp();

	}
}		

#if 0
	int i;		
	unsigned char *p;
	int start;
	unsigned int bytes;
	unsigned char ch;			
	int number1, number2, result;	/* define operation registers */
	bit operation;			/* define operation */

	hour = 0;
	min = 0;
	sec = 0;
	
	SCON = 0x52;	/* SCON */	/* setup serial port control */
	TMOD = 0x20;	/* TMOD */	/* hardware (9600 BAUD @12MHZ) */
	TCON = 0x69;	/* TCON */
	TH1 =  0xfd;	/* TH1 */
/*
	tinit();
*/
	printf("\n\n8031 MONITOR\n\n");


	/*	INIT_8255();	*/
	XBYTE[0xe003] = 0x80;
	XBYTE[0xe000] = 0x00;
	
	buf[0] = 'A';
	buf[1] = 'B';
	buf[2] = '\0';
	putchar( buf[0] );
	printf( "\n%c\n", buf[1] );
	printf("\n%s\n", buf );
	printf("\n%x\n", buf );
	dump_memory( (unsigned int)in_queue_data, 10 );

	init_serial();

	while (1)  
	{
#if	0
		if( msec >= 1000 )
		{
			EA = 0;	/*	disable interrupt	*/
			msec = 0;
			EA = 1;
			if( sec & 1 )
			{
				XBYTE[0xe000] = 0xaa;
			}
			else
			{
				XBYTE[0xe000] = 0x55;	
			}

			if( ++sec > 60 )
			{
				sec = 0;
				if( ++min > 60 )
				{
					min = 0;
					if( ++hour > 23 )
					{
						hour = 0;
					}
				}
			}
		}
/*		printf("%2d:%2d:%02d\n", hour, min, sec );	*/
		continue;
#endif

		ch = serial_in() ;
		serial_out( ch );
		continue;

		putchar('>');
		ch = toupper( /*getchar()*/serial_in() );

		switch( ch )
		{

			case 'A':
				itob( 23, buf, 10 );
				printf("\nbuf => %s\n", buf );
				break;

			case 'D':
				printf("ump memory\n");
				printf("Start: ");
				start = get_v();
				printf("\nNumber of bytes: ");
				bytes	= getnumber();
				printf("\n");		
				printf( "\nstart = %x, bytes = %d\n", start, bytes );

	printf("\nstart = %x\n", start );

				dump_memory( start, bytes );
#if	0
				if( htob( buf, 16, (unsigned int *)&num ) != E_OK )
				{
					printf( "\nError: %s\n", buf );
				}
				else
				{
					printf( "\n%s => %d\n", buf, num );
				}
#endif
				break;
			case 3:
				printf( "Get a Ctrl-C\n" );
				break;
			default:
				break;
		}
		
#if	0
		number1 = getnumber ();	/* read number1 */
		number2 = getnumber ();	/* read number2 */
		printf ("Input operation: '+' (ADD) or '-' (SUB) ? ");
		operation = (getchar () == '+');	/* get operation */
		output (operation ? (number1 + number2)	/* perform operation */
			: (number1 - number2) );
#endif
	}
}


void rept( char s, char n ) 
{
	if( n == 0 )
	{
		return;
	}
	while(n--)
	{
		putchar( s );
	}
}

void space( unsigned char n )
{
	if( !n )
	{
		return;
	}
	while( n-- )
	{
		putchar( ' ' );
	}
}

void print_ascii( unsigned char ch, unsigned char pad, unsigned char n )
{
	if( ch < ' ' || ch > '}' )
	{
		putchar( pad );
	}
	else
	{
		putchar( ch );
		space( n );
	}
}

/*
 *	Name: print_hex
 *
 *	Description:
 *		Print ( len ) digits of ( n ) in hex. Zero fill with
 *		( spc ) zeros	e.g. print_hex( 100, 4, 2 ) => 0064
 */
void print_hex( unsigned int n, unsigned char len, unsigned char spc )
{
	char temp[16];
	itob( n, temp, 16 );
	rept( '0', ( len-strlen( temp ) ) );
	printf( temp );
	space( spc );
}

void get_xdata( unsigned int start, unsigned int num )
{
	start++;
	num++;
}

void dump_memory( unsigned int start, unsigned int num )
{
	unsigned int i, j;

printf("start=%x, num=%x\n", start, num);
	printf("\n");

	for( i = start; i < start+num/*+(16-(start+num)%16)*/ ; i+=16 )
	{
		print_hex( i, 4, 4 );
		for( j = 0; j < 16; j++ )
		{
			print_hex( XBYTE[i+j], 2, 1 );
		}
		for( j = 0; j< 16; j++ )
		{
			print_ascii( XBYTE[i+j], '.', 0 );
		}
		printf("\n");	
	}
}

int get_v( void )
{
	char flag;
	unsigned int val;
	unsigned char cnt;
	unsigned char ch;

	static unsigned int last;
	
	ch = 0;
	cnt = 0;

	memset( temp, 0, sizeof( temp ) / sizeof( char ) );

	while( ch != CR && ch != ',' && ch != LF )
	{
		ch = getchar();
		if( ch == '\b' || ch == DEL )
		{
			if( cnt > 0 )
			{
				cnt--;
			}
			else
			{
				putchar( 7 );
			}
			printf("\b");
			continue;
		}

		temp[cnt++] = ch;

		if( cnt > 5 )
		{
			printf( "\b \b"); 
			putchar( 7 );
			cnt--;
		}

	}
	temp[--cnt] = '\0';
/*	printf("\ntemp => %s\n", temp );	*/

	if( htob( (char *)&temp[0], 16, (unsigned int *)&val ) != E_OK )
	{
		val = last;
	}

/*	printf("\nval = %d\n", val );	*/
	if( cnt == 0 )
	{
		return( last );
	}		
	
	last = val;
	return( val );
}

/*
 *	Name: timer0()
 *
 *	Description:
 *		Timer0 interrupt service function
 *		executes each each 250 us @ 12Mhz crystal clock
 */
void timer0( void ) interrupt 1 using 1	/*	interrupt vector at 0008H, reg bank 1	*/
{
	if( ++intcycle > 3 )
	{
		intcycle = 0;
		msec++;
	}
}

void tinit( void )
{
	TH0 = -250;
	TL0 = -250;
	TMOD = TMOD | 0x02;	/*	select mode 2 	*/
	TR0 = 1;					/*	start timer 0	*/
	ET0 = 1;					/*	enable timer0 interrupt	*/
	EA	= 1;					/*	global interrupt enable	*/
}
#endif

⌨️ 快捷键说明

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