📄 12128ma.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 + -