📄 新建 文本文档.txt
字号:
#include<ioM16V.h>
#include <macros.h>
#include <stdlib.h>
#include "eeprom.h"
#define CON_P PORTC
#define RS_BIT BIT(5)
#define RW_BIT BIT(7)
#define E_BIT BIT(6)
#define RS_H CON_P &=~ RS_BIT
#define RS_L CON_P |= RS_BIT
#define RW_H CON_P &= ~RW_BIT
#define RW_L CON_P |= RW_BIT
#define E_H CON_P &= ~E_BIT
#define E_L CON_P |= E_BIT
#define outport PORTB
#define y0_bit BIT(0)
#define y1_bit BIT(1)
#define y2_bit BIT(2)
#define y3_bit BIT(3)
#define y4_bit BIT(4)
#define y0_on outport |=y0_bit
#define y0_off outport &=~y0_bit
#define y1_on outport |=y1_bit
#define y1_off outport &=~y1_bit
#define y2_on outport |=y2_bit
#define y2_off outport &=~y2_bit
#define y3_on outport |=y3_bit
#define y3_off outport &=~y3_bit
#define y4_on outport |=y4_bit
#define y4_off outport &=~y4_bit
unsigned char x0=0;
unsigned char x1=0;
unsigned char x2=0;
unsigned char x3=0;
unsigned char x4=0;
unsigned char x5=0;
unsigned char x6=0;
signed int maneu;
signed int delay1;
signed int delay2;
signed int delay3;
unsigned char aa[3];
unsigned char aa2[3];
unsigned char aa3[3];
unsigned long cnt;
void delay_us(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++)
{
;
}
return;
}
void delay_1ms(void)
{
unsigned int i;
for(i=0;i<141;i++)//(XTAL 8M*143-2)
{
;
}
}
void delay_ms(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++)
{
delay_1ms();
}
}
char Lcd_Busy()
{
char r;
DDRA = 0x00;
E_L;RS_L;RW_H;
delay_us(20);
E_H;
delay_us(20);
r = PINA & 0x80;
E_L;
DDRA=0xFF;
return r;
}
void Lcd_Command(unsigned char Command)
{
while(Lcd_Busy());
E_L;RS_L;RW_L;
delay_us(20);
E_H;
PORTA = Command;
delay_us(20);
E_L;
}
void Lcd_Write(unsigned char Data)
{
while(Lcd_Busy());
E_L;RS_H;RW_L;
delay_us(20);
E_H;
PORTA = Data;
delay_us(20);
E_L;
}
void Lcd_Init()
{
DDRA = 0xFF;
DDRC = 0xFF;
Lcd_Command(0x38);
Lcd_Command(0x08);
Lcd_Command(0x01);
Lcd_Command(0x06);
Lcd_Command(0x0c);
}
void inputio(void)
{
DDRD=DDRD&0x3F;
DDRC=DDRC&0xE0;
PORTD=0xC0;
PORTC=0x1F;
if(PINC&0x10)
x0=0;
else
x0=1;
if(PINC&0x08)
x1=0;
else
x1=1;
if(PINC&0x04)
x2=0;
else
x2=1;
if(PINC&0x02)
x3=0;
else
x3=1;
if(PINC&0x01)
x4=0;
else
x4=1;
if(PIND&0x80)
x5=0;
else
x5=1;
if(PIND&0x40)
x6=0;
else
x6=1;
}
void lcddis()
{
Lcd_Command(0x81);
asc_tran("[Down delay ]= ms");
Lcd_Command(0xc1);
asc_tran("[Resign Time]= ms");
Lcd_Command(0x95);
asc_tran("[Finishdelay]= ms");
Lcd_Command(0xd5);
asc_tran("PRODUCTS=");
}
void asc_tran(unsigned char *asc)
{
while((*asc) != 0)
{
Lcd_Write(*asc);
asc++;
}
}
void timer_change()
{
if(x3==1)
{
if(maneu<4)
{
maneu++;
delay_ms(300);
}
if(maneu==4)
{maneu=1;}
}
if(maneu==1)
{
Lcd_Command(0x80);
asc_tran(">");
Lcd_Command(0xc0);
asc_tran(" ");
Lcd_Command(0x94);
asc_tran(" ");
if(x4)
{
if(delay1>500)
{delay1=498;}
delay1=delay1+2;
itoa(aa,delay1,10);
Lcd_Command(0x8f);
asc_tran(" ");
Lcd_Command(0x8f);
asc_tran(aa);
delay_ms(100);
}
if(x5)
{
if(delay1<0)
{delay1=2;}
delay1=delay1-2;
itoa(aa,delay1,10);
Lcd_Command(0x8f);
asc_tran(" ");
Lcd_Command(0x8f);
asc_tran(aa);
delay_ms(100);
}
//EEPROM_WRITE(0x3000,delay1);
delay_ms(10);
}
if(maneu==2)
{
Lcd_Command(0x80);
asc_tran(" ");
Lcd_Command(0xc0);
asc_tran(">");
Lcd_Command(0x94);
asc_tran(" ");
if(x4)
{
if(delay2>500)
{delay2=498;}
delay2=delay2+2;
itoa(aa2,delay2,10);
Lcd_Command(0xcf);
asc_tran(" ");
Lcd_Command(0xcf);
asc_tran(aa2);
delay_ms(100);
}
if(x5)
{
if(delay2<0)
{delay2=2;}
delay2=delay2-2;
itoa(aa2,delay2,10);
Lcd_Command(0xcf);
asc_tran(" ");
Lcd_Command(0xcf);
asc_tran(aa2);
delay_ms(100);
}
//EEPROM_WRITE(0x3010,delay2);
delay_ms(10);
}
if(maneu==3)
{
Lcd_Command(0x80);
asc_tran(" ");
Lcd_Command(0xc0);
asc_tran(" ");
Lcd_Command(0x94);
asc_tran(">");
if(x4)
{
if(delay3>500)
{delay3=498;}
delay3=delay3+2;
itoa(aa3,delay3,10);
Lcd_Command(0xa3);
asc_tran(" ");
Lcd_Command(0xa3);
asc_tran(aa3);
delay_ms(100);
}
if(x5)
{
if(delay3<0)
{delay3=2;}
delay3=delay3-2;
itoa(aa3,delay3,10);
Lcd_Command(0xa3);
asc_tran(" ");
Lcd_Command(0xa3);
asc_tran(aa3);
delay_ms(100);
}
//EEPROM_WRITE(0x3020,delay3);
//delay_ms(10);
}
}
void main()
{
unsigned int start,ready,temp;
unsigned long cnt;
unsigned char ad1,ad2,ad3,t,enable;
delay_ms(1);
DDRB=DDRB|0x1f;
PORTB=PORTB&0xe0;
y2_on;
y3_on;
y4_on;
maneu=0;
ad1=0x3000;
ad2=0x3010;
ad3=0x3020;
delay_ms(100);
Lcd_Init();
lcddis();
CLI();
EEPROM_READ(ad3,delay3);
delay_ms(100);
EEPROM_READ(ad2,delay2);
delay_ms(100);
EEPROM_READ(ad1,delay1);
delay_ms(100);
itoa(aa,delay1,10);
Lcd_Command(0x8f);
asc_tran(aa);
delay_ms(1);
itoa(aa,delay2,10);
Lcd_Command(0xcf);
asc_tran(aa);
delay_ms(1);
itoa(aa,delay3,10);
Lcd_Command(0xa3);
asc_tran(aa);
Lcd_Command(0xde);
asc_tran("0");
start=0;
ready=0;
cnt=0;
t=0;
while(1)
{
inputio();
ready=0;
enable=1;
delay_ms(1);
if (x0&enable==1)
{
delay_ms(100);
ready=1;
//maneu=0;
}
if(ready&x2==1)
{
delay_ms(100);
start=1;
}
if(start==1)
{
delay_ms(100);
y0_on;
}
if(maneu+x4==5)
{
delay_ms(2);
enable=0;
CLI();
CLI();
CLI();
CLI();
delay_ms(50);
/*
EEPROM_WRITE(ad3,t);
delay_ms(500);
EEPROM_WRITE(ad2,t);
delay_ms(500);
EEPROM_WRITE(ad1,t);
delay_ms(500);
*/
EEPROM_WRITE(ad3,delay3);
delay_ms(500);
EEPROM_WRITE(ad2,delay2);
delay_ms(500);
EEPROM_WRITE(ad1,delay1);
delay_ms(500);
Lcd_Command(0x80);
asc_tran(" ");
Lcd_Command(0xc0);
asc_tran(" ");
Lcd_Command(0x94);
asc_tran(" ");
maneu=0;
enable=1;
}
if(x1&start==1)
{
delay_ms(delay1);
y1_on;
delay_ms(delay2);
y1_off;
delay_ms(delay3);
y0_off;
start=0;
ready=0;
cnt++;
itoa(aa,cnt,10);
Lcd_Command(0xde);
asc_tran(aa);
}
if(x3==1)
{
if(maneu<5)
{
maneu++;
delay_ms(300);
}
if(maneu==5)
{maneu=1;}
}
if(maneu==4)
{
Lcd_Command(0x80);
asc_tran("+");
Lcd_Command(0xc0);
asc_tran("+");
Lcd_Command(0x94);
asc_tran("+");
}
if(maneu==1)
{
Lcd_Command(0x80);
asc_tran(">");
Lcd_Command(0xc0);
asc_tran(" ");
Lcd_Command(0x94);
asc_tran(" ");
if(x4==1)
{
if(delay1>500)
{delay1=498;}
delay1=delay1+2;
itoa(aa,delay1,10);
Lcd_Command(0x8f);
asc_tran(" ");
Lcd_Command(0x8f);
asc_tran(aa);
delay_ms(100);
}
if(x5==1)
{
if(delay1<0)
{delay1=2;}
delay1=delay1-2;
itoa(aa,delay1,10);
Lcd_Command(0x8f);
asc_tran(" ");
Lcd_Command(0x8f);
asc_tran(aa);
delay_ms(100);
}
//EEPROM_WRITE(0x3000,delay1);
// delay_ms(10);
}
if(maneu==2)
{
Lcd_Command(0x80);
asc_tran(" ");
Lcd_Command(0xc0);
asc_tran(">");
Lcd_Command(0x94);
asc_tran(" ");
if(x4)
{
if(delay2>500)
{delay2=498;}
delay2=delay2+2;
itoa(aa2,delay2,10);
Lcd_Command(0xcf);
asc_tran(" ");
Lcd_Command(0xcf);
asc_tran(aa2);
delay_ms(100);
}
if(x5)
{
if(delay2<0)
{delay2=2;}
delay2=delay2-2;
itoa(aa2,delay2,10);
Lcd_Command(0xcf);
asc_tran(" ");
Lcd_Command(0xcf);
asc_tran(aa2);
delay_ms(100);
}
//EEPROM_WRITE(0x3010,delay2);
//delay_ms(10);
}
if(maneu==3)
{
Lcd_Command(0x80);
asc_tran(" ");
Lcd_Command(0xc0);
asc_tran(" ");
Lcd_Command(0x94);
asc_tran(">");
if(x4==1)
{
if(delay3>500)
{delay3=498;}
delay3=delay3+2;
itoa(aa3,delay3,10);
Lcd_Command(0xa3);
asc_tran(" ");
Lcd_Command(0xa3);
asc_tran(aa3);
delay_ms(100);
}
if(x5==1)
{
if(delay3<0)
{delay3=2;}
delay3=delay3-2;
itoa(aa3,delay3,10);
Lcd_Command(0xa3);
asc_tran(" ");
Lcd_Command(0xa3);
asc_tran(aa3);
delay_ms(100);
}
//EEPROM_WRITE(0x3020,delay3);
//delay_ms(10);
}
}
}
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=456596&bbs_page_no=4&bbs_id=1000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -