Projet

Général

Profil

/***********************************************************************/
/* */
/* FILE :SP4b1.c */
/* DATE :Thu, May 20, 2021 */
/* DESCRIPTION :main program file. */
/* CPU GROUP :87B */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.18). */
/* NOTE:THIS IS A TYPICAL EXAMPLE. */
/***********************************************************************/

#include "sfr32c87.h"

void decode_touche(){
char touche;
char t;
pd10=0x0f;
pu31=1;
p10=0x00;
while(1){
t=p10;
if(t!=0xf0){
//pmi?re ligne
p10=0xfe;
t=p10;
if(t==0xde){
touche='2';
}
if(t==0xbe){
touche='1';
}
if(t==0x7e){
touche='3';
}
//deuxi?me ligne
p10=0xfd;
t=p10;
if(t==0xdd){
touche='5';
}
if(t==0xbd){
touche='4';
}
if(t==0x7d){
touche='6';
}
//troisi?me ligne
p10=0xfb;
t=p10;
if(t==0xdb){
touche='8';
}
if(t==0xeb){
touche='7';
}
if(t==0x7b){
touche='9';
}
//quarti?me ligne
p10=0xf7;
t=p10;
if(t==0xd7){
touche='0';
}
if(t==0xe7){
touche='*';
}
if(t==0x77){
touche='#';
}
}
}
}

/*
void init_keyboard(void);
void tpo_50ms(void);
unsigned char touche = 0;
void main(void){
init_keyboard();
while(1){
if ( (p10 & 0xf0)!= 0xf0 ){
touche = p10;
tpo_50ms();
}
}
}
void init_keyboard(void){
pd10 = 0x0F;
p10=0;
pu31 = 1;
}
void tpo_50ms(void){
tcspr = 0x8A;
ta0mr = 0x82;
ta0 = 50000;
ta0s = 1;
ta0os = 1;
ta0ic = 0x00;
while(ir_ta0ic != 1);
ta0s = 0;
}
*/

#define LCD_E p3_2
#define LCD_RW p3_1
#define LCD_DC p3_0
#define LCD_PORT pd3

void lcd_4b(char c){
LCD_E=1; //E
if(c&0x80){
p3_7=1;
}
else{
p3_7=0;
}
if(c&0x40){
p3_6=1;
}
else{
p3_6=0;
}
if(c&0x20){
p3_5=1;
}
else{
p3_5=0;
}
if(c&0x10){
p3_4=1;
}
else{
p3_4=0;
}
LCD_E=0;
}

void lcd_8b(char c){
lcd_4b(c);
lcd_4b(c<<4);
}
void lcd_com(char c){
LCD_DC=0;
lcd_8b(c);
}
void lcd_char( char c){
LCD_DC=1;
lcd_8b(c);
}

void tpo_us(unsigned short duree){
tcspr = 0x8A;
ta0mr = 0x82;
ta0= duree;
ta0s = 1;ta0os = 1;
ta0ic = 0x00;
while(ir_ta0ic != 1);
ta0s = 0;
}




void lcd_init(void){
LCD_DC=0;
tpo_us(15000);
lcd_4b(0x30);
tpo_us(5000);
lcd_4b(0x30);
tpo_us(100);
lcd_4b(0x30);
tpo_us(100);
lcd_4b(0x20);
lcd_com(0x28);
lcd_com(0x06);
lcd_com(0x0E);
lcd_com(0x01);
tpo_us(5000);
}

void main(){
LCD_PORT=0xFF;
lcd_init();
lcd_char('M');
decode_touche();

}
(5-5/14)