HTEB1

User manual

3.4 A/D + PWM

This sample shows the usage of the A/D converter. We sample the voltage of P1/P2, filter it and show the result on the LCD. On D/A-Con you will see a reversed voltage at P2 – built with a RC-filter from TOW (P76).

/*------------------------------------------------------------------

**AD_PWM Demo shows some funcions of the A/D converter

**and the use of PWM (= inverse output from P2) at D/A-Con

**-----------------------------------------------------------------

 

*/

#include "mydefs.h"

 

 

// with further includes!

#include "stdlib.h"

 

 

// for abs()

void wait(u16 wastetime)

// local LCD port delay

{

 

 

 

while(wastetime--

);

 

 

}

 

 

 

/*

 

 

 

LCD-Port / Bits on TinyEvalBoard

 

RS = P75, R/W

= P74,

EN

= P20, DATA = P5

*/

 

 

 

//some defines for easy access #define CLEAR_LCD_RS (PDR7 &= ~0x20)

#define SET_LCD_RS

 

(PDR7 = 0x20)

#define CLEAR_LCD_RW

(PDR7 &= ~0x10)

#define SET_LCD_RW

 

(PDR7 = 0x10)

#define CLEAR_LCD_EN

(PDR2 &= ~0x01)

#define SET_LCD_EN

 

(PDR2 = 0x01)

#define LCD_DATA_PORT (PDR5)

 

#define LCD_DATA_CTRL (PCR5)

 

#define LCD_OUT

0xff

 

#define LCD_IN 0x00

 

 

#define LCD_WAIT

 

{wait(100);}

void LCDWriteCmd(u8 cmd)

// write cmd to LCD port

{

 

 

CLEAR_LCD_RS;

 

 

CLEAR_LCD_RW;

 

 

SET_LCD_EN;

 

 

LCD_DATA_PORT = cmd;

 

LCD_WAIT;

 

 

CLEAR_LCD_EN;

 

 

LCD_WAIT;

 

 

}

 

 

void LCDWriteData(u8 data)

// write data to LCD port

{

 

 

SET_LCD_RS;

 

 

CLEAR_LCD_RW;

 

 

SET_LCD_EN;

 

 

LCD_DATA_PORT = data;

 

LCD_WAIT;

 

 

CLEAR_LCD_EN;

 

 

LCD_WAIT;

 

 

}

 

 

u8 LCDReadStatus(void)

 

// get the LCD status register

{

 

 

u8 status;

 

 

CLEAR_LCD_RS;

 

 

SET_LCD_RW;

 

 

Issue 0.2

Page 41

07/2002

Page 41
Image 41
IBM H8 user manual A/D + Pwm