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

📄 main.c

📁 参加05年全国_大学生_电子设计_大赛的程序 AVR ICC基于AVR单片机!
💻 C
📖 第 1 页 / 共 3 页
字号:
/*2005年全国电子大赛悬挂运动控制系统主程序*/
/*燕山大学信息学院097队*/
//#include <iom8v.h>
#include <iom32v.h>
#include <macros.h>
#include <eeprom.h>
#include <stdlib.h>
#include <math.h> 
/***注意,连续5个/是为了调试设置的记号*****/
//#include "ziku.h"
/*里面存放包含文件子函数的声明,所有子函数的声明都方sub_funs.h里面*/
//#include "sub_funs.h"
/*字库文件,也可以方到工程里面,就不用include了*/
//#include "ziku.h"
/*工程文件里面有delay.c<里面有延时子函数>,
		dis.c<显示函数>,
		keyboard.c<键盘函数>
*/


/*************************/
#define uchar unsigned char
#define unit unsigned int
#define uint unsigned int
#define ulong unsigned long
#define xtal 8  
#define fosc 8000000 //晶振8MHZ
#define baud 2400	 //波特率

/*************************/
#define uchar unsigned char
#define unit unsigned int
#define uint unsigned int
#define ulong unsigned long

#define L  1150
#define P  150
#define one_size  0.2639  //0.2639
#define PI 3.1415926
#define E1 {del(10); PORTC|=0x08;del(10);PORTC&=~0x08;WDR();}
#define E2() {del(10); PORTC|=0x10;del(10);PORTC&=~0x10;WDR();}  
#define E3 {del(10); PORTC|=0x20;del(10);PORTC&=~0x20;WDR();}
/***********************/
#define KEY_OK		15				 
#define KEY_FUN		14				 
#define KEY_UP 		13				 
#define KEY_DOWN	12				 
#define KEY_LEFT	11				 
#define KEY_RIGHT	10	
#define KEY_0	0
#define KEY_1	1
#define KEY_2	2
#define KEY_3	3
#define KEY_4	4
#define KEY_5	5
#define KEY_6	6
#define KEY_7	7
#define KEY_8	8
#define KEY_9	9

#define MENU_MAX 6	//菜单的数量

#define NULL 0
#define EE2() delay_us(10);PORTC|=(1<<4);delay_us(10);PORTC&=~(1<<4)
#define EN_DIS() PORTC|=(1<<4) /*使能LCD,PORTC4*/
#define DIS_DIS() PORTC&=~(1<<4)/*禁止LCD*/
#define DBUS PORTD		/*PORTA为数据总线*/
#define OUT_DBUS() 	DDRD|=0xff		/*设置数据线位输出模式*/
#define IN_DBUS() 	DDRD=0x00		/*设置数据总线为输入方式*/
#define OUT_D_Cx() 	DDRA|=0xFf		/*设置控制线位输出模式*/
#define SETDIF() 	PORTA|=0x02;EE2()	/*PORTC.0为DIF标志信号线*/
#define CLRDIF() 	PORTA&=(~0x02);EE2()	/**/
#define SETRWF() 	PORTA|=0x04;EE2()	/*PORTC.1为RWF标志信号线*/
#define CLRRWF() 	PORTA&=(~0x04);EE2()	/**/
#define SETEF() 	PORTA|=0x08;EE2()	/*PORTC.2为EF标志信号线*/
#define CLREF() 	PORTA&=(~0x08);EE2()	/**/
#define SETCS1() 	PORTA|=0x10;EE2()	/*PORTC.3为CS1标志信号线*/
#define CLRCS1() 	PORTA&=(~0x10);EE2()	/**/
#define SETCS2() 	PORTA|=0x20;EE2()/*PORTC.4为CS2标志信号线*/
#define CLRCS2() 	PORTA&=(~0x20);EE2()	/**/
#define SETRST() 	PORTA|=0x40;EE2()	/*PORTC.5为RST标志信号线*/
#define CLRRST() 	PORTA&=(~0x40);EE2()	/**/


uint t_cnt=0;
/***********************/

/***********************/
//每一次步进 ss 的变化量
float ss1,ss2;///设定坐标后的线长
float ss01,ss02;//原点时线长
float x,y;//当前x,y?
char phase1,phase2;
uchar fx=0,fy=0,mode=0;
float seq[4];
///dui  lie
//float px=0,py=0;//要显示的坐标值
//float yuan_s1=0,yuan_s2=0;
unit nx, ny;
uchar a;
uchar flag(void);
uchar getchar(void);
void del(unit time);
void delay(unsigned int n);
void write_step(void);
void draw_line_base(float x0,float y0);
void draw_line(float linex0,float liney0);
uchar xdat[4]={0xc0,0x60,0x30,0x90};
uchar ydat[4]={0x0c,0x06,0x03,0x09};
uchar xi,yi;
char  sym_v;
/***********************/
/***********************/
const unsigned char A_Z[]={
	0xF8,0x24,0x22,0x24,0xF8,	//A
	0x82,0xFE,0x92,0x92,0x6C,	//B
	0x7C,0x82,0x82,0x82,0x44,	//C
	0x82,0xFE,0x82,0x82,0x7C,	//D
	0x82,0xFE,0x92,0x92,0xC6,	//E
	0x82,0xFE,0x92,0x3A,0x06,	//F
	0x38,0x44,0x82,0xA2,0x66,	//G
	0xFE,0x10,0x10,0xFE,0x00,	//H
	0x82,0xFE,0x82,0x00,0x00,	//I
	0x40,0x82,0x82,0x7E,0x02,	//J
	0xFE,0x10,0x2C,0xC2,0x00,	//K
	0xFE,0x80,0x80,0x80,0x00,	//L
	0xFE,0x0E,0xF0,0x0E,0xFE,	//M
	0xFE,0x18,0x60,0xFE,0x00,	//N
	0x7C,0x82,0x82,0x82,0x7C,	//O
	0x82,0xFE,0x92,0x12,0x0C,	//P
	0x7C,0xA2,0xA2,0xC2,0x7C,	//Q
	0xFE,0x12,0x72,0x92,0x8C,	//R
	0xCC,0x92,0x92,0x92,0x66,	//S
	0x06,0x82,0xFE,0x82,0x06,	//T
	0x7E,0x80,0x80,0x7E,0x00,	//U
	0x0E,0x70,0xC0,0x70,0x0E,	//V
	0x0E,0xF0,0x1E,0xF0,0x0E,	//W
	0x82,0xCE,0x30,0xCE,0x82,	//X
	0x02,0x8E,0xF0,0x8E,0x02,	//Y
	0x82,0xE2,0x92,0x8E,0x82	//Z
};
const unsigned char a_z[]={
	0x40,0xA8,0xA8,0xF0,0x00,	//a
	0xFE,0x90,0x90,0x60,0x00,	//b
	0x70,0x88,0x88,0x88,0x00,	//c
	0x60,0x90,0x90,0xFE,0x00,	//d
	0x70,0xA8,0xA8,0x30,0x00,	//e
	0x90,0xFC,0x92,0x12,0x00,	//f
	0x74,0xAA,0xAA,0xA6,0x42,	//g
	0xFE,0x10,0x10,0xE0,0x00,	//h
	0x10,0x7A,0x80,0x40,0x00,	//i
	0x40,0x88,0x7A,0x00,0x00,	//j
	0xFE,0x20,0xF0,0x88,0x00,	//k
	0xFE,0x80,0x40,0x00,0x00,	//l
	0xF8,0x08,0xF8,0x08,0xF0,	//m
	0x08,0xF0,0x08,0x08,0xF0,	//n
	0x70,0x88,0x88,0x70,0x00,	//o
	0xFC,0x24,0x24,0x18,0x00,	//p
	0x18,0x24,0x24,0xFC,0x00,	//q
	0x88,0xF8,0x90,0x08,0x08,	//r
	0x98,0xA8,0xA8,0xC8,0x00,	//s
	0x08,0x7E,0x88,0x40,0x00,	//t
	0x78,0x80,0x80,0x78,0x80,	//u
	0x08,0x38,0xC0,0x38,0x08,	//v
	0x18,0xE0,0x38,0xE0,0x18,	//w
	0x88,0xD8,0x20,0xD8,0x88,	//x
	0x9C,0xA0,0x7C,0x00,0x00,	//y
	0xC8,0xA8,0x98,0x88,0x00	//z
};
const unsigned char num0_9[]={
	0x3e,0x51,0x49,0x45,0x3e,	//0
	0x42,0x7f,0x40,0x00,0x00,	//1
	0x42,0x61,0x51,0x49,0x46,	//2
	0x21,0x41,0x45,0x4b,0x31,	//3
	0x18,0x14,0x12,0x7f,0x10,	//4
	0x27,0x45,0x45,0x45,0x39,	//5
	0x3c,0x4a,0x49,0x49,0x30,	//6
	0x01,0x01,0x79,0x05,0x03,	//7
	0x36,0x49,0x49,0x49,0x36,	//8
	0x06,0x49,0x49,0x29,0x1e,	//9
};
//空格
const unsigned char space[]={0x00,0x00,0x00,0x00};
//下画线
const unsigned char x_ds[]={0x80,0x80,0x80,0x00};
//冒号
const unsigned char x_mh[]={0xc6,0xc6,0x00,0x00};
//小数点
const unsigned char x_p[]={0xc0,0x00,0x00,0x00};
//下箭头
const unsigned char x_xia[]={0x06,0x1E,0x7E,0x1E,0x06,0x00};
//上箭头
const unsigned char x_shang[]={0x60,0x78,0x7E,0x78,0x60,0x00};

/********下面是汉字区****************/
//汉字是前面的是上面部分,后面的是下面部分,各16个,一共32个
//悬
const unsigned char hz_xuan[]={0,64,64,64,127,213,85,85,85,85,85,127,64,64,64,0,0,64,112,2,59,66,66,74,82,66,66,99,6,16,96,0};
//挂
const unsigned char hz_gua[]={16,16,16,255,144,80,72,72,72,255,72,72,72,72,64,0,2,66,129,127,0,64,68,68,68,127,68,68,68,68,64,0};
//运
const unsigned char hz_yun[]={64,65,206,4,0,32,34,162,98,34,162,34,34,34,32,0,64,32,31,32,40,76,74,73,72,76,68,69,94,76,64,0};
//动
const unsigned char hz_dong[]={32,36,36,228,36,36,36,32,16,16,255,16,16,240,0,0,8,28,11,8,12,5,78,36,16,12,3,32,64,63,0,0};
//控
const unsigned char hz_kong[]={8,8,8,255,136,72,0,152,72,40,10,44,72,216,8,0,2,66,129,127,0,0,64,66,66,66,126,66,66,66,64,0};
//制
const unsigned char hz_zhi_[]={0,80,79,74,72,255,72,72,72,0,252,0,0,255,0,0,0,0,63,1,1,255,33,97,63,0,15,64,128,127,0,0};
//系
const unsigned char hz_xi[]={0,0,2,34,178,170,102,98,34,17,77,129,1,1,0,0,0,64,33,19,9,5,65,129,127,1,5,9,19,98,0,0};
//统
const unsigned char hz_tong[]={32,48,44,163,96,16,132,196,164,157,134,132,164,196,132,0,32,34,35,18,18,146,64,48,15,0,0,63,64,65,112,0};
//燕
const unsigned char hz_yan[]={68,68,68,244,4,223,84,84,84,223,4,228,68,100,68,0,66,98,57,3,8,51,98,2,10,51,96,1,10,50,99,0};
//山
const unsigned char hz_shan[]={0,0,224,0,0,0,0,255,0,0,0,0,0,224,0,0,0,32,127,32,32,32,32,63,32,32,32,32,32,127,0,0};
//大
const unsigned char hz_da[]={32,32,32,32,32,32,160,127,160,32,32,32,32,32,32,0,0,128,64,32,16,12,3,0,1,6,8,48,96,192,64,0};
//学
const unsigned char hz_xue[]={64,48,16,18,92,84,80,81,94,212,80,24,87,50,16,0,0,2,2,2,2,2,66,130,127,2,2,2,2,2,2,0};
//信
const unsigned char hz_xin_[]={128,64,48,252,7,10,168,168,169,174,170,168,168,8,8,0,0,0,0,127,0,0,126,34,34,34,34,34,126,0,0,0};
//息
const unsigned char hz_xi_[]={0,0,0,252,84,84,86,85,84,84,84,252,0,0,0,0,0,32,56,1,61,65,65,69,89,65,65,113,0,8,48,0};
//院
const unsigned char hz_yuan_[]={254,2,50,74,134,12,36,36,37,38,36,36,36,12,4,0,255,0,2,4,131,65,49,15,1,1,127,129,129,129,241,0};
//队
//const unsigned char hz_dui[]={254,2,18,42,198,2,0,0,0,255,0,0,0,0,0,0,127,0,2,68,67,32,16,12,3,0,3,12,16,96,32,0};
//当
//const unsigned char hz_dang[]={0,0,64,66,92,72,64,64,127,64,80,78,68,192,0,0,0,0,32,34,34,34,34,34,34,34,34,34,34,127,0,0};
//前
//const unsigned char hz_qian[]={8,8,232,168,169,174,234,8,8,200,12,11,234,8,8,0,0,0,127,4,36,68,63,0,0,31,64,128,127,0,0,0};
//坐
const unsigned char hz_zuo[]={0,128,96,28,32,192,0,255,0,128,64,60,64,128,0,0,65,64,68,68,68,68,68,127,69,68,68,68,68,64,64,0};
//标
const unsigned char hz_biao[]={16,16,208,255,80,144,32,34,34,34,226,34,34,34,32,0,4,3,0,255,0,9,4,3,64,128,127,0,1,6,28,0};
//画
const unsigned char hz_hua[]={2,242,2,2,250,74,74,250,74,74,250,2,2,242,2,0,0,127,32,32,47,36,36,39,36,36,47,32,32,127,0,0};
//圆
const unsigned char hz_yuan[]={0,255,1,1,221,85,85,85,85,85,221,1,1,255,0,0,0,255,64,64,103,80,72,71,72,80,103,64,64,255,0,0};
//设
//const unsigned char hz_she[]={64,65,206,4,0,128,64,190,130,130,130,190,192,64,64,0,0,0,127,32,144,128,64,67,44,16,16,44,67,192,64,0};
//置
//const unsigned char hz_zhi[]={0,32,47,169,169,175,233,185,169,175,169,169,47,32,0,0,128,128,128,255,170,170,170,170,170,170,170,255,128,128,128,0};
//右箭头,指示用
const unsigned char hz_jiantou[]={0,254,254,252,252,248,248,240,240,224,224,192,192,128,128,0,0,127,127,63,63,31,31,15,15,7,7,3,3,1,1,0};
//线
const unsigned char hz_xian[]={64,96,88,199,98,0,144,144,144,255,144,146,156,148,128,0,32,34,35,18,18,18,32,32,16,19,12,20,34,64,248,0};
//点
const unsigned char hz_dian[]={0,0,0,224,32,32,32,63,36,36,36,244,36,0,0,0,0,64,48,7,18,98,2,10,18,98,2,15,16,96,0,0};
//找
const unsigned char hz_zhao[]={8,8,8,255,136,72,8,16,16,255,16,18,148,16,16,0,2,66,129,127,0,32,32,16,16,8,15,26,33,64,240,0};
//图
const unsigned char hz_tu[]={0,254,66,66,34,30,170,74,170,154,10,2,2,254,0,0,0,255,66,66,65,65,72,114,84,64,65,67,65,255,0,0};
//黑
//const unsigned char hz_hei[]={0,0,63,33,37,57,33,255,49,41,37,33,63,0,0,0,68,52,5,5,21,101,5,7,21,101,5,5,5,20,100,0};
//断
const unsigned char hz_duan[]={0,254,68,88,192,255,80,76,0,252,68,68,194,66,66,0,0,63,36,35,32,63,97,34,24,7,0,0,255,0,0,0};
//定
const unsigned char hz_ding[]={0,16,12,164,36,36,37,230,36,36,36,36,20,12,4,0,64,32,24,7,8,16,32,127,66,66,66,66,64,64,0,0};
//一
const unsigned char hz_yi[]={0,128,128,128,128,128,128,128,128,128,128,128,128,192,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//二
const unsigned char hz_er[]={0,0,4,4,4,4,4,4,4,4,4,6,4,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,24,16,0};
//完
const unsigned char hz_wan[]= {0,144,140,164,164,164,165,166,164,164,164,164,148,140,4,0,0,128,64,32,24,7,0,0,0,63,64,64,64,112,0,0};
//成
const unsigned char hz_cheng[]={0,0,248,72,72,72,200,8,255,8,9,10,200,136,8,0,64,48,15,0,8,80,79,32,16,11,12,18,33,64,240,0};
//心
const unsigned char hz_xin[]={0,128,0,0,240,0,1,2,28,8,0,64,128,0,0,0,4,3,0,0,63,64,64,64,64,64,64,120,0,7,2,0};
//数
const unsigned char hz_shu[]={0x10,0x92,0x54,0x38,0xFF,0x38,0x54,0x52,0x80,0xF0,0x1F,0x12,0x10,0xF0,0x10,0x00,0x42,0x42,0x2A,0x2E,0x13,0x1A,0x26,0x02,0x40,0x20,0x13,0x0C,0x33,0x60,0x20,0x00};
//左肩头
const unsigned char hz_jiantou_xx[]={0x00,0x80,0x80,0xC0,0xC0,0xE0,0xE0,0xF0,0xF0,0xF8,0xF8,0xFC,0xFC,0xFE,0xFE,0x00,0x00,0x01,0x01,0x03,0x03,0x07,0x07,0x0F,0x0F,0x1F,0x1F,0x3F,0x3F,0x7F,0x7F,0x00};
/**************************/
void delay_us(uint us);
void delay_ms(uint ms);
/*************************/ 
void init_dis(void);
void reset(void);
void do_x(uchar d);
uchar read_x(uchar row, uchar line);
void write_x(uchar x,uchar y,uchar c);
void from_x(uchar x);
void do_on(void);
void setx(uchar x);
void sety(uchar y);
void setyEx(uchar y);
void clrscr(uint cs);
void clr_row(uint row,uint cs);
void write_p(uchar x,uchar y,uchar i);
void dis_hz(uint x,uint y,const uchar *hz);
void dis_hz_row(uint row,uint y,const char **hz);
uint dis_en_row(uint x,uint y,uchar *p);
void dis_welcome(void);
uint dis_en(uint x,uint y,uint c);
void line(uint x1,uint y1,uint x2,uint y2);
void line_x(uint x1,uint y1,uint x2,uint y2);
void draw_point(uint x,uint y);
void draw_line_x(uint x1,uint y1,uint x2,uint y2);
void dis_menu(uint menu_index,uint menu_max);
/***************************/
void dis_side(void);
void start_wait(void);
void stop_wait(void);
int get_num(uint row,uint line);
void m_dingdian(void);
void m_huaxian(void);
void m_huayuan(void);
void m_zhaoxian(void);
void m_huatu(void);
void m_dingbiao(void);
void c_point(uint x,uint y);/*接受马达来的数据*/
uint dis_num_row(uint x,uint y,uint d);
/***************/
uint get_key(void);

void draw_cricle(float);

/*下面是需要的子函数*/
void delay_us(uint us)
{
	while(us--)
	{
		_NOP();
		_NOP();
		_NOP();
		_NOP();
		_NOP();
		_NOP();
	}
}
void delay_ms(uint ms)
{
	unsigned int i,j;
	for(j=0;j<ms;j++)
	{
		for(i=1;i<(unsigned int)(8*143-2);i++)
		{
			;
		}
	}
}
/*等待并获取键盘输入*/
uint get_key(void)
{
	uchar r;		//返回值
	uchar value1,value2;	//136   132  130   129      1 2 3 MENU 
	PORTB = 0xF0;           //72    68   66    65       4 5 6 UP   
	DDRB  = 0x0F;           //40    36   34    33       7 8 9 DOWN 
	delay_ms(10);           //24    20   18    17       * 0 # CLEAR
	while(1)		//循环检测是不是右键按下
	{
		PORTB = 0xF0;
		DDRB  = 0x0F;
		delay_ms(30);
		value1=PINB|0x0F;
		value1=~value1;/*取的列位*/
		if(value1!=0x00)
		{
			PORTB=0xFF;
			DDRB=0xF0;  
			PORTB=0x0F;
			delay_ms(30);
			value2=PINB|0xF0;
			value2=~value2;
			if(value2!=0x00)
			{
				value1=value1|value2;		
				switch (value1)
				{
					case 136: r=KEY_1;break;
					case 132: r=KEY_2;break; 
					case 130: r=KEY_3;break;
					case 72: r=KEY_4;break;
					case 68: r=KEY_5;break;
					case 66: r=KEY_6;break;
					case 40: r=KEY_7;break;
					case 36: r=KEY_8;break;
					case 34: r=KEY_9;break;
					case 24: r=KEY_0;break;
					case 17: r=KEY_OK;break;
					case 129: r=KEY_FUN;break;
					case 65: r=KEY_UP;break;
					case 33: r=KEY_DOWN;break;
					case 20: r=KEY_LEFT;break;
					case 18: r=KEY_RIGHT;break;
					default:r=128;break;
				}

    				break;
			}
		}
	}
	delay_ms(100);
	return(r);
	////return KEY_OK;
}
/*初始化单片机的显示环境,但是不进行清楚屏幕*/
void init_dis(void)
{
	//DDRC|=(1<<4);
	DDRC|=(1<<4);PORTC|=(1<<4);
	OUT_DBUS();		/*设置数据端口为输出模式*/
	OUT_D_Cx();		/*设置控制端口为输出模式*/
	DDRC|=(1<<4);
	//EN_DIS();
	CLRRWF();		/*本程序只写不读,故在前面设置RWF标志,如果读,读完自动恢复写*/
	reset();		/*复位模块*/
	do_on();		/*打开显示*/
	//clrscr();		/*清空屏幕显示*/
	from_x(0);		/*从第0小行行显示*/
}
void reset(void)	/*显示模块复位函数*/
{
	SETCS1();
	SETCS2();
	CLRRST();
	delay_us(200);	/*延迟200us*/
	SETRST();
	delay_us(200);
}

void do_x(uchar d)	/*对显示模块进行操作,但是不管操作类型;如果要设置DIF,RWF,CS1-2等,在其前设置*/
{
	DBUS=d;
	CLREF();
	delay_us(1);	/*延迟1us*/
	SETEF();
	delay_us(1);
	CLREF();
	delay_us(1);
}

uchar read_x(uchar row, uchar line)/*读制定行,列的数据*/
{
 	  
	  uchar c;
	  /*比赛的时候,图形在右屏幕,只读图形的数据,所以选右屏幕就可以了*/
	  //SETCS2();
	  //CLRCS1();
	  /*设置坐标*/
	  //setx(row&7);
	  //sety(line&63);
	  /*上面的效率高,下面的通用*/
	  setyEx(line);
	  setx(row);
	  /*读取数据*/
	  IN_DBUS();  /*设置为输入*/
	  SETDIF();	  /*数据模式*/
	  SETRWF();	  /*读操作*/
	  /*第一次读*/
	  CLREF();
	  delay_us(1);	/*延迟1us*/
	  SETEF();
	  delay_us(1);
	  CLREF();
	  delay_us(1);
	  /*第二次读*/
	  CLREF();
	  delay_us(1);	/*延迟1us*/
	  SETEF();
	  delay_us(5);
	  c=PIND;
	  CLREF();
	  delay_us(1);
	  /***********/
	  CLRRWF();
	  OUT_DBUS();
	  return c;
}
/*y=0~127*/
void write_x(uchar x,uchar y,uchar c)
{
	setyEx(y);
	setx(x); 
	SETDIF();
	CLRRWF();
	do_x(c);
}
void do_on(void)		/*打开显示模块<2板都打开>*/
{
	CLRDIF();	/*设置为指令模式*/
	SETCS1();	/*2片都打开*/
	SETCS2();
	do_x(0x3f);
}

void from_x(uchar x)	/*设置开始显示的行*/
{
	CLRDIF();	/*设置为指令模式*/
	SETCS1();	/*2片都打开*/
	SETCS2();
	do_x(x+0xc0);
}

void setx(uchar x)	/*设置当前x位置,不改变CS1或CS2*/
{
	CLRDIF();
	do_x((x&0x7)+0xb8);
}

void sety(uchar y)	/*本函数不涉及CS1和CS2,使用时请注意;y>=0 && y<=63,多余的位无效*/
{
	CLRDIF();
	do_x((y&0x3f)+0x40);
}

void setyEx(uchar y)	/*增强的sety,连同CS一起设置,y>=0 && y<=127*/
{
	CLRDIF();
	y&=127;
	if(y>63)
	{
		SETCS2();
		CLRCS1();
	}
	else
	{
		SETCS1();
		CLRCS2();
	}
	do_x((y&0x3f)+0x40);
}
/*左面是1,右面是2,全部清除是0*/
void clrscr(uint cs)
{
	uchar i,j;
	SETCS1();
	SETCS2();
	if(cs==1)
	{
		CLRCS2();
	}
	if(cs==2)
	{

⌨️ 快捷键说明

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