Skip to content

Instantly share code, notes, and snippets.

@misodengaku
Created February 9, 2013 12:57
Show Gist options
  • Save misodengaku/4745221 to your computer and use it in GitHub Desktop.
Save misodengaku/4745221 to your computer and use it in GitHub Desktop.
柿連打テスト
/***********************************************************************/
/* */
/* FILE :Kakiren2.c */
/* DATE :Fri, Feb 08, 2013 */
/* DESCRIPTION :Main Program */
/* CPU TYPE :H8/3694F */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.16). */
/* */
/***********************************************************************/
/*
intprg.cをこんな感じに書き換え
__interrupt(vect=19) void INT_TimerA(void) {
timer_a();
}
*/
#include "typedefine.h"
#include "iodefine.h"
#include "lcd.h"
#define SECOND 4000000
void main(void);
#ifdef __cplusplus
extern "C" {
void abort(void);
}
#endif
//void wait2(void);
void dispnum3(int _n);
void dispnum2(int _n);
int sw1_push(void);
void timer_a(void);
void beep(void);
int nokori, flag;
void main(void)
{
int count;
IO.PCR1 = 0;
IO.PCR7 = 0xff;
TA.TMA.BYTE = 0x18;
lcd_init();
while(1){
nokori = 14;
count = 0;
flag = 0;
IENR1.BYTE = IENR1.BYTE != 0x40; /* 割り込み禁止 */
lcd_command(0x80);
lcd_puts((unsigned char *)"カキレンダ");
lcd_command(0xC0);
lcd_puts((unsigned char *)"Please push sw1");
wait(100000);
while (sw1_push() == 0) ;
lcd_command(0x80);
lcd_puts((unsigned char *)" ");
lcd_command(0xC0);
lcd_puts((unsigned char *)" ");
IENR1.BYTE = IENR1.BYTE | 0x40; /* 割り込み許可 */
while(flag == 0);
while(flag == 1)
{
while(sw1_push() == 0 && nokori > 0);
while(sw1_push() == 1 && nokori > 0);
if (nokori > 0)
count++;
}
beep();
lcd_command(0x80);
lcd_puts((unsigned char *)"End!!!");
wait(SECOND);
lcd_command(0x80);
lcd_puts((unsigned char *)"Score:");
dispnum3(count);
lcd_command(0xC0);
lcd_puts((unsigned char *)"Please push sw1");
while(sw1_push() == 0);
while(sw1_push() == 1);
lcd_command(0x80);
lcd_puts((unsigned char *)" ");
lcd_command(0xC0);
lcd_puts((unsigned char *)" ");
}
return;
}
/*------------------------------------------------
数字出力 4桁以上はあかん
------------------------------------------------*/
void dispnum3(int _n)
{
unsigned char n1 = _n, n2 = 0, n3 = 0;
if(_n > 999)
return;
while(n1 >=100){
n2 -= 100;
n3++;
}
while(n1 >=10){
n1 -= 10;
n2++;
}
lcd_putc(n3 + '0');
lcd_putc(n2 + '0');
lcd_putc(n1 + '0');
}
/*------------------------------------------------
数字出力 3桁以上はあかん
------------------------------------------------*/
void dispnum2(int _n)
{
unsigned char n1 = _n, n2 = 0;
if(_n > 99)
return;
while(n1 >=10){
n1 -= 10;
n2++;
}
lcd_putc(n2 + '0');
lcd_putc(n1 + '0');
}
void beep(void)
{
int i;
for (i = 0; i < 5000; i++){
IO.PDR7.BYTE = 0xff;
IO.PDR7.BYTE = 0x00;
}
}
int sw1_push(void)
{
int pdr1, count;
pdr1 = IO.PDR1.BYTE;
count = ~pdr1 & 0x1;
return count;
}
void timer_a(void)
{
IRR1.BYTE = IRR1.BYTE & 0xBF;
nokori--;
lcd_command(0x80);
lcd_puts((unsigned char *)" ");
lcd_command(0x80);
if (nokori >= 13)
{
lcd_puts((unsigned char *)"3");
nokori = 13;
beep();
}else if (nokori == 12)
{
lcd_puts((unsigned char *)"2");
beep();
}else if (nokori == 11)
{
lcd_puts((unsigned char *)"1");
beep();
}else if (nokori == 10)
{
beep();
lcd_puts((unsigned char *)"Start!!!");
flag = 1;
}else if (nokori > 0){
dispnum2(nokori);
}else{
flag = 0;
IENR1.BYTE = IENR1.BYTE != 0x40; /* 割り込み禁止 */
}
}
#ifdef __cplusplus
void abort(void)
{
}
#endif
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment