📄 hanshu2.h
字号:
unsigned int a[5]="K=150";
unsigned int flag2;//遥控更新数据的标志
unsigned int num[34]={0};
unsigned int value;//表示增益数字
unsigned int k=5;//表示增益数字的位数
unsigned int *addr=0xf100;//要檫除的页地址
unsigned int flag;
void write_flash()
{
*P_Flash_Ctrl=0xaaaa;
*P_Flash_Ctrl=0x5533;
*addr=value;
}
void page_erase(void)
{
*P_Flash_Ctrl=0xaaaa;
*P_Flash_Ctrl=0x5511;
*addr=0x0000;//向相应的页地址写如任意值;
}
unsigned int read_flash(void)
{
unsigned int data1;
data1=*addr;
return (data1);
}
//初始化函数
void lcd_init(void)
{
write_command(0x38);//显示模式的设置
write_command(0x08);//显示关闭*/
write_command(0x0c);//整体显示,关光标,不闪烁
write_command(0x06);//显示光标移动设置
write_command(0x01); //显示清屏
}
//写命令函数,IOA0~IOA2为控制端口,IOA8~IOA15为数据端口
void write_command(unsigned int command)
{
check_busy();
Set_IOA_Dir(0xff07);
Set_IOA_Attrib(0xff07);
PA->byte.byteh=command;//操作高8位
P0_0=0;//rs=0
P0_1=0;//rw=0
P0_2=1;//E=1
asm("nop");
P0_2=0;//E=0;//下降沿触发
}
//写数据函数
void write_data(unsigned int data2)
{
check_busy();
Set_IOA_Dir(0xff07);
Set_IOA_Attrib(0xff07);
PA->byte.byteh=data2;//操作高8位
P0_0=1;//rs=1
P0_1=0;//rw=0
P0_2=1;//E=1
asm("nop");
P0_2=0;//E=0;//下降沿触发
}
void check_busy()
{
unsigned int c;
Set_IOA_Dir(0x0007);
Set_IOA_Attrib(0xff07);
Set_IOA_Data(0xff00);//悬浮式输入
do
{
Watchdog_Clear();
P0_0=0;//rs=0
P0_1=1;//rw=1
P0_2=1;//E=1
c=PA->byte.byteh;//只读出高8位
P0_2=0;//E=0;
asm("nop");
c&=0x80;
}while(c==0x80);
}
unsigned int key_scan()
{
if(P1_0==1)
{
delay();
if(P1_0==1)
{
return(1);
}
}
else if(P1_1==1)
{
delay();
if(P1_1==1)
{
return(1);
}
}
else
{
return(0);
}
}
void get_key()
{
if(P1_0==1)
{
do{
Watchdog_Clear();
}while(P1_0==1);
if(value<150)//
{
if(value==1)
{
value=10;
}
else
{
value+=10;
}
}
}
if(P1_1==1)//'-10'
{
do
{
Watchdog_Clear();
}while(P1_1==1);//等待按键释放
if((value==10)|(value==1))
{
value=1;
}
else
{
value-=10;
}
}
}
void jiema_init()
{
//时钟的设置
*P_SystemClock=0x0013;//24.576--24.576/8
//定时器时钟的设置
Set_TimerA_Data(0x0000);//定时器A从0开始计数
Set_TimerA_Ctrl(stopA);//开始先不计数
//设置中断
*P_INT_Ctrl=0x0100;//开IRQ3_EXIT1中断
//开中断
asm("irq on");
}
unsigned int get_ma()
{
unsigned int i;
for(i=0;i<8;i++)
{
if(num[i+26]>130)
{
num[i]=1;
}
else
{
num[i]=0;
}
}
i=num[0]*128+num[1]*64+num[2]*32+num[3]*16+num[4]*8+num[5]*4+num[6]*2+num[7]*1;
switch(i)
{
case 0xff:return(1);break;
case 0x7f:return(10);break;
case 0xbf:return(20);break;
case 0x3f:return(30);break;
case 0xdf:return(40);break;
case 0x5f:return(50);break;
case 0x9f:return(60);break;
case 0x1f:return(70);break;
case 0xef:return(80);break;
case 0x6f:return(90);break;
case 0x87:return(100);break;
case 0x27:return(110);break;
case 0xa7:return(120);break;
case 0x07:return(130);break;
case 0x05:return(140);break;
case 0x95:return(150);break;
default:return(value);break;
}
}
void delay()
{
unsigned int r,e;
r=0;
while(r--)
{
e=0xfff;
while(e--)
{
Watchdog_Clear();
}
}
}
void lcd_display()
{
unsigned int l;
if((value>0)&(value<=150))
{
if(value>=100)
{
a[2]=value/100+48;
a[3]=(value-100)/10+48;
a[4]=0+48;
k=5;
}
else if((value>=10)&(value<100))
{
a[2]=value/10+48;
a[3]=0+48;
k=4;
}
else
{
a[2]=1+48;
k=3;
}
}
else
{
value=150;
}
for(l=0;l<k;l++)
{
write_data(a[l]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -