-----------------------------プログラムソース 本体---------------------------------
#include <htc.h>
#include <stdio.h>
__CONFIG(FCMDIS & IESODIS & BORDIS & UNPROTECT & MCLRDIS & PWRTEN & WDTDIS & INTIO);
__IDLOC(1207);
//WRITE No.1(0-63)
__EEPROM_DATA(0xC3,0xDE,0xB0,0xC0,0xB6,0xB7,0xBA,0xCF); /* 0-7 */
__EEPROM_DATA(0xDA,0xC3,0xB2,0xC5,0xB2,0x21,0x21,0xFF); /* 8-15 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 16-23 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 24-31 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 32-39 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 40-47 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 48-55 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F); /* 56-63 */
//WRITE No.2(64-127)
__EEPROM_DATA(0xC3,0xDE,0xB0,0xC0,0xB6,0xB7,0xBA,0xCF); /* 64-71 */
__EEPROM_DATA(0xDA,0xC3,0xB2,0xC5,0xB2,0x21,0x21,0xFF); /* 72-79 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 80-87 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 88-95 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 96-103 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 104-111 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 112-119 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F); /* 120-127 */
//WRITE No.3(128-191)
__EEPROM_DATA(0xC3,0xDE,0xB0,0xC0,0xB6,0xB7,0xBA,0xCF); /* 128-135 */
__EEPROM_DATA(0xDA,0xC3,0xB2,0xC5,0xB2,0x21,0x21,0xFF); /* 136-143 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 144-151 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 152-159 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 160-167 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 168-175 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 176-183 */
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F); /* 184-191 */
//*************デモ用(192-255)
__EEPROM_DATA(0x48,0x52,0x20,0x48,0x52,0x20,0x62,0x54); /* 192-199 */
__EEPROM_DATA(0x20,0x54,0x48,0x49,0x53,0x20,0x4D,0x4F); /* 200-207 */
__EEPROM_DATA(0x52,0x53,0x45,0x20,0x43,0x52,0x45,0x41); /* 208-215 */
__EEPROM_DATA(0x54,0x45,0x44,0x20,0x42,0x59,0x20,0x50); /* 216-223 */
__EEPROM_DATA(0x49,0x43,0x31,0x36,0x46,0x36,0x38,0x38); /* 224-231 */
__EEPROM_DATA(0x20,0x4A,0x41,0x33,0x52,0x55,0x41,0x20); /* 232-239 */
__EEPROM_DATA(0x50,0x52,0x4F,0x47,0x52,0x41,0x4D,0x4D); /* 240-247 */
__EEPROM_DATA(0x45,0x44,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF); /* 248-255 */
#define _XTAL_FREQ 31000 /* 31kHz */
#define tan 10 /* 10ミリ秒 */
#define tyo 30 /* 30ミリ秒 */
////関数宣言(mainの前に書く)
void putch(unsigned char moji);
lcd_position(unsigned char);
lcd_init();
lcd_clear();
ioport();
modesel();
prginit();
cws();
moji_input();
moji_data();
moji_write();
w_end();
readstart();
mm_data();
readno3();
readno1();
readno0();
readno6();
f_moji();
dspmsg();
areturn();
lcd_dsp();
lcd_c_p();
a();
b();
c();
d();
e();
f();
g();
h();
i();
j();
k();
l();
m();
n();
o();
p();
q();
r();
s();
t();
u();
v();
w();
x();
y();
z();
bk();
sk();
ee();
n0();
n1();
n2();
n3();
n4();
n5();
n6();
n7();
n8();
n9();
sp();
sura();
qu();
speed_tan();
speed_tyo();
ra2_1tyo();
ra2_0tyo();
ra2_1tan();
ra2_0tan();
////グローバル変数(mainの前に書く)
int areturn_flug=0;
int readno6flug=0;
int readno0flug=0;
int readno3flug=0;
int readno1flug=0;
int modeflug=0;
int modecnt=0;
int cws_cnt=0;
int m_s_flug=0;
int cwspeed=4;
int cwcnt;
int cw_flug=0;
int m_i_flug=2; /*書き込みパターン番号処理の時が2でこの処理が終わると0or1とする*/
int m_r_flug=2;
int mojino=0;
int w_flug=0;
int m_w_flug=2;
int mojiadd=0;
int lcd_p=0;
int mojicnt=0;
int w_end_flug=0;
int readgo=0;
int m_w_cnt=0;
int r_m_end;
int start_r_add;
int dspadd=0;
int writestop=56;/*書込み文字数制限の設定*/
unsigned char romdata;
unsigned char mojidata;
main()
{
OSCCON=0x00; /* 31kHz */
PORTA=1;
PORTC=0;
ioport();
lcd_init(); /* LCDを初期化する */
/*電源オン直後メッセージ*/
prginit();
dspmsg();
/*CWスピードを読込む*/
if(eeprom_read(0xEF)>10 || eeprom_read(0xEF)<1){
cwspeed=4;
}
else{
cwspeed=eeprom_read(0xEF);
}
while(1){
/*モード設定選択*/
if(RA5==0 && m_s_flug==0) modesel();
if(RA5==1 && modeflug==1){
modeflug=0;
++modecnt;
/*cwspeed処理の最初はカウントさせない為CWS_cnt=0にする*/
cws_cnt=0;
if(modecnt>6) modecnt=1;
switch(modecnt){
case 1:
lcd_c_p();
printf("データ カキコミ No.1");
mojiadd=0x00;
break;
case 2:
lcd_c_p();
printf("データ カキコミ No.2");
mojiadd=0x40;
break;
case 3:
lcd_c_p();
printf("データ カキコミ N0.3");
mojiadd=0x80;
break;
case 4:
lcd_c_p();
printf("データ ヨミダシ SW3-SW5");
break;
case 5:
lcd_c_p();
printf("スピードセッテイ SW5");
break;
case 6:
lcd_c_p();
printf("デモンストレーション SW2");
break;
}
}
//*CWスピード設定*/
if(RA3==0 && modecnt==5){
cws();
}
if(RA3==1 && cw_flug==1 && modecnt==5){
if(cws_cnt==1) ++cwspeed;
if(cwspeed>10) cwspeed=1;
/*CWスピード設定を書き込む*/
eeprom_write(0xEF,cwspeed);
cw_flug=0;
cws_cnt=1;
lcd_c_p();
printf("cw speed=");
printf("%d",cwspeed);
}
/*文字入力*/
if((RA4==0 && modecnt==1) || (RA4==0 && modecnt==2) || (RA4==0 && modecnt==3)){
moji_input();
m_s_flug=1;
}
if((RA4==1 && modecnt==1 && m_i_flug==1) || (RA4==1 && modecnt==2 && m_i_flug==1) || (RA4==1 && modecnt==3 && m_i_flug==1)){
/*文字を順番に表示*/
w_flug=1; /*書き込み処理中のフラグ*/
m_i_flug=0;
++mojino;
moji_data();
/*文字表示(スペースの時は-と表示)*/
lcd_position(84);
if(mojidata==0x20) printf("-");
else printf("%c",mojidata);
/*文字種類が42を超えるとAに戻す*/
if(mojino>41) mojino=0;
}
/*文字入力をRA1でAに戻す*/
if(RA1==0) areturn();
if(RA1==1 && areturn_flug==1){
mojino=0;
areturn_flug=0;
}
/*文字を書き込む*/
if(RA0==0 && w_flug==1){
moji_write();
}
if(RA0==1 && m_w_flug==1){
m_w_flug=0;
++m_w_cnt;
/*最初の1文字入力の時LCDの上から1行を消去*/
if(m_w_cnt==1){
lcd_position(0);
printf(" ");
}
/*書込み文字数表示*/
lcd_position(86);
printf("%d",m_w_cnt);
/*書込み文字数制限*/
if(m_w_cnt>writestop) break;
switch(modecnt){
case 1:
eeprom_write(0+m_w_cnt-1,mojidata);
eeprom_write(0x3F,m_w_cnt);
break;
case 2:
eeprom_write(64+m_w_cnt-1,mojidata);
eeprom_write(0x7F,m_w_cnt);
break;
case 3:
eeprom_write(128+m_w_cnt-1,mojidata);
eeprom_write(0xBF,m_w_cnt);
break;
}
/*書込み文字連結表示*/
if(m_w_cnt>=1 && m_w_cnt<=20){
lcd_position(m_w_cnt-1);
printf("%c",mojidata);
}
if(m_w_cnt>=21 && m_w_cnt<=40){
lcd_position(m_w_cnt+43);
printf("%c",mojidata);
}
if(m_w_cnt>=41 && m_w_cnt<=60){
lcd_position(m_w_cnt-21);
printf("%c",mojidata);
}
}/*文字を書き込むif文の最後*/
/*書き込み終了*/
if(RA3==0 && w_flug==1){
w_end();
}
if(RA3==1 && w_end_flug==1 && w_flug==1){
prginit();
lcd_clear();
dspmsg();
}
/*読み出しスタート*/
if(RA3==0 && modecnt==4){
readno3();
}
if(RA3==1 && modecnt==4 && readno3flug==1){
readno3flug=0;
start_r_add=128;
r_m_end=eeprom_read(0xBF);
lcd_c_p();
f_moji();
}
if(RA1==0 && modecnt==4){
readno1();
}
if(RA1==1 && modecnt==4 && readno1flug==1){
readno1flug=0;
start_r_add=64;
r_m_end=eeprom_read(0x7F);
lcd_c_p();
f_moji();
}
if(RA0==0 && modecnt==4){
readno0();
}
if(RA0==1 && modecnt==4 && readno0flug==1){
readno0flug=0;
start_r_add=0;
r_m_end=eeprom_read(0x3F);
lcd_c_p();
f_moji();
}
/*demo*/
if(RA4==0 && modecnt==6){
readno6();
}
if(RA4==1 && modecnt==6 && readno6flug==1){
readno6flug=0;
start_r_add=192;
r_m_end=58;
lcd_c_p();
f_moji();
}
}////whileの最後
}////メインの最後
//******************* 関数 *******************
lcd_c_p()
{
lcd_clear();
lcd_position(0);
}
areturn()
{
areturn_flug=1;
}
dspmsg()
{
lcd_position(66);
printf("CQ CQ (^_^) V.34");
}
f_moji()
{
for(mojicnt=0;mojicnt<r_m_end;++mojicnt){
romdata=eeprom_read(mojicnt+start_r_add);
if(mojicnt>=0 && mojicnt<=19) {
dspadd=0;
lcd_dsp();
}
if(mojicnt>=20 && mojicnt<=39){
dspadd=44;
lcd_dsp();
}
if(mojicnt>=40 && mojicnt<=59){
dspadd=-20;
lcd_dsp();
}
if(mojicnt>=60 && mojicnt<=89){
dspadd=20;
lcd_dsp();
}
}
}
lcd_dsp()
{
lcd_position(mojicnt+dspadd);
printf("%c",romdata);
mm_data();
}
//***
readno6()
{
readno6flug=1;
}
//***
readno0()
{
readno0flug=1;
}
//***
readno3()
{
readno3flug=1;
}
//***
readno1()
{
readno1flug=1;
}
//***
modesel()
{
modeflug=1;
}
//***
readstart()
{
readgo=1;
}
//***
cws()
{
cw_flug=1;
}
//***
moji_input()
{
m_i_flug=1;
}
//***
moji_write()
{
m_w_flug=1;
}
//***
w_end()
{
w_end_flug=1;
}
//***
prginit()
{
modeflug=0;
modecnt=0;
cws_cnt=0;
m_s_flug=0;
cwcnt;
cw_flug=0;
m_i_flug=2; /*書き込みパターン番号処理の時が2でこの処理が終わると0or1とする*/
m_r_flug=2;
mojino=0;
w_flug=0;
m_w_flug=2;
mojiadd=0;
lcd_p=0;
mojicnt=0;
w_end_flug=0;
readgo=0;
m_w_cnt=0;
}
//********文字検索***********
moji_data()
{
switch(mojino){
case 1:
mojidata=0x41;
//a();
break;
case 2:
mojidata=0x42;
//b();
break;
case 3:
mojidata=0x43;
//c();
break;
case 4:
mojidata=0x44;
//d();
break;
case 5:
mojidata=0x45;
//e();
break;
case 6:
mojidata=0x46;
//f();
break;
case 7:
mojidata=0x47;
//g();
break;
case 8:
mojidata=0x48;
//h();
break;
case 9:
mojidata=0x49;
//i();
break;
case 10:
mojidata=0x4A;
//j();
break;
case 11:
mojidata=0x4B;
//k();
break;
case 12:
mojidata=0x4C;
//l();
break;
case 13:
mojidata=0x4D;
//m();
break;
case 14:
mojidata=0x4E;
//n();
break;
case 15:
mojidata=0x4F;
//o();
break;
case 16:
mojidata=0x50;
//p();
break;
case 17:
mojidata=0x51;
//q();
break;
case 18:
mojidata=0x52;
//r();
break;
case 19:
mojidata=0x53;
//s();
break;
case 20:
mojidata=0x54;
//t();
break;
case 21:
mojidata=0x55;
//u();
break;
case 22:
mojidata=0x56;
//v();
break;
case 23:
mojidata=0x57;
//w();
break;
case 24:
mojidata=0x58;
//x();
break;
case 25:
mojidata=0x59;
//y();
break;
case 26:
mojidata=0x5A;
//z();
break;
case 27:
mojidata=0x30;
//n0();
break;
case 28:
mojidata=0x31;
//n1();
break;
case 29:
mojidata=0x32;
//n2();
break;
case 30:
mojidata=0x33;
//n3();
break;
case 31:
mojidata=0x34;
//n4();
break;
case 32:
mojidata=0x35;
//n5();
break;
case 33:
mojidata=0x36;
//n6();
break;
case 34:
mojidata=0x37;
//n7();
break;
case 35:
mojidata=0x38;
//n8();
break;
case 36:
mojidata=0x39;
//n9();
break;
case 37:
mojidata=0x20;
//sp();
break;
case 38:
mojidata=0x2F;
//sura();
break;
case 39:
mojidata=0x3F;
//qu();
break;
case 40:
mojidata=0x62;
//bk();
break;
case 41:
mojidata=0x73;
//sk();
break;
case 42:
mojidata=0x65;
//ee();
break;
default:
mojidata=0x20;
//sp();
}
}
mm_data()
{
switch(romdata){
case 0X41:
a();
break;
case 0x42:
b();
break;
case 0x43:
c();
break;
case 0x44:
d();
break;
case 0x45:
e();
break;
case 0x46:
f();
break;
case 0x47:
g();
break;
case 0x48:
h();
break;
case 0x49:
i();
break;
case 0x4A:
j();
break;
case 0x4B:
k();
break;
case 0x4C:
l();
break;
case 0x4D:
m();
break;
case 0x4E:
n();
break;
case 0x4F:
o();
break;
case 0x50:
p();
break;
case 0x51:
q();
break;
case 0x52:
r();
break;
case 0x53:
s();
break;
case 0x54:
t();
break;
case 0x55:
u();
break;
case 0x56:
v();
break;
case 0x57:
w();
break;
case 0x58:
x();
break;
case 0x59:
y();
break;
case 0x5A:
z();
break;
case 0x30:
n0();
break;
case 0x31:
n1();
break;
case 0x32:
n2();
break;
case 0x33:
n3();
break;
case 0x34:
n4();
break;
case 0x35:
n5();
break;
case 0x36:
n6();
break;
case 0x37:
n7();
break;
case 0x38:
n8();
break;
case 0x39:
n9();
break;
case 0x20:
sp();
break;
case 0x2F:
sura();
break;
case 0x3F:
qu();
break;
case 0x62:
bk();
break;
case 0x65:
ee();
break;
case 0x73:
sk();
break;
default:
sp();
}
}
a()
{
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
b()
{
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
c()
{
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
d()
{
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
e()
{
ra2_1tan();
// ra2_0tan();
ra2_0tyo();
}
f()
{
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
g()
{
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
h()
{
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
i()
{
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
j()
{
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
k()
{
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
l()
{
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
m()
{
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
n()
{
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
o()
{
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
p()
{
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
q()
{
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
r()
{
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
s()
{
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
t()
{
ra2_1tyo();
ra2_0tyo();
}
u()
{
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
v()
{
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
w()
{
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
x()
{
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
y()
{
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
z()
{
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
bk()
{
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
}
sk()
{
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
}
ee()
{
ra2_1tan();
// ra2_0tan();
ra2_0tan();
}
n0()
{
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
n1()
{
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
n2()
{
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
n3()
{
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
n4()
{
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tyo();
}
n5()
{
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
n6()
{
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
n7()
{
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
n8()
{
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
n9()
{
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
sp()
{
ra2_0tyo();
}
sura()
{
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
qu()
{
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tyo();
ra2_0tan();
ra2_1tan();
ra2_0tan();
ra2_1tan();
ra2_0tyo();
}
speed_tan()
{
for(cwcnt=0;cwcnt<cwspeed;++cwcnt){
__delay_ms(tan);
}
}
speed_tyo()
{
for(cwcnt=0;cwcnt<cwspeed;++cwcnt){
__delay_ms(tyo);
}
}
ra2_1tyo()
{
RA2=1;
speed_tyo();
}
ra2_0tyo()
{
RA2=0;
speed_tyo();
}
ra2_1tan()
{
RA2=1;
speed_tan();
}
ra2_0tan()
{
RA2=0;
speed_tan();
}
ioport()
{
ANSEL=0x0; /* AN4-7はデジタルI/Oモード */
CMCON0=0x07;
TRISA=0xFB; /* RA0,1,3,4,5は入力ピン RA2は出力ピン*/
TRISC=0; /* RC0-5は出力ピン */
PORTA=0xFB; /* RA0,1,3,4,5はH RA2はL*/
PORTC=0; /* RC0-5はL */
}
void putch(unsigned char nandemo) /* PUTCH */
{
RC5=1;
__delay_us(80);
PORTC=(((nandemo>>4)&0x0F)|0x20);
RC4=1;
RC4=0;
PORTC=((nandemo&0x0F)|0x20);
RC4=1;
RC4=0;
}
-----------------------------プログラムソース 本体 END---------------------------------
-----------------------------プログラムソース LCD 初期化---------------------------------
#include <htc.h>
#define _XTAL_FREQ 31000
lcd_init();
lcd_position(unsigned char);
lcd_clear();
void putch(unsigned char);
lcd_write_RS1(unsigned char);
lcd_write_RS0(unsigned char);
lcd_init() /* LCDモジュール初期化 PIC:PIC16F688 LCD:SD1602 HUOB-XA */
{ /* RC5:RS RC4:E
RC5=0;
RC4=0;
__delay_ms(30);
PORTC=0x03; /* 8bitモード */
RC4=1;
RC4=0;
__delay_ms(10);
RC4=1;
RC4=0;
__delay_us(400);
RC4=1;
RC4=0;
__delay_us(400);
PORTC=0x02; /* 4bitモード */
RC4=1;
RC4=0;
// lcd_write_RS0(0x28); /* function set */
__delay_us(80);
PORTC=0x02;
RC4=1;
RC4=0;
PORTC=0x08; /* 0x08:2行 0x00:1行 */
RC4=1;
RC4=0;
// lcd_write_RS0(0x0C) /*disp control*/
__delay_us(80);
PORTC=0x00;
RC4=1;
RC4=0;
PORTC=0x0C; /*disp:on cursor:off blink:off*/
RC4=1;
RC4=0;
// lcd_write_RS0(0x01) /*clear disp*/
__delay_us(80);
PORTC=0x00;
RC4=1;
RC4=0;
PORTC=0x01;
RC4=1;
RC4=0;
__delay_ms(4);
// lcd_write_RS0(0x06); /*entry mode*/
__delay_us(80);
PORTC=0x00;
RC4=1;
RC4=0;
PORTC=0x06; /*increment*/
RC4=1;
RC4=0;
}
//***************************************************************
//***************************************************************
lcd_position(unsigned char pos) /* 文字の位置を指定 */
{
RC5=0;
lcd_write_RS0(0x80+pos);
}
//***************************************************************
//***************************************************************
lcd_clear() /* RS=0(RC5=0)画面をクリア */
{
RC5=0;
__delay_us(80);
PORTC=0x00;
RC4=1;
RC4=0;
PORTC=0x01;
RC4=1;
RC4=0;
__delay_ms(4);
}
//***************************************************************
//*************************************************************
lcd_write_RS1(unsigned char c) /* RS=1(RC5=1)の時1バイトだけ書く */
{
__delay_us(80);
PORTC=(((c>>4)&0x0F)|0x20);
RC4=1;
RC4=0;
PORTC=((c&0x0F)|0x20);
RC4=1;
RC4=0;
}
//***************************************************************
//*************************************************************
lcd_write_RS0(unsigned char c) /* RS=0(RC5=0)の時1バイトだけ書く */
{
__delay_us(80);
PORTC=((c>>4)&0x0F);
RC4=1;
RC4=0;
PORTC=(c&0x0F);
RC4=1;
RC4=0;
}
//***************************************************************
-----------------------------プログラムソース LCD 初期化 END---------------------------------