8051 Atmel 89C51 programming in C example

Thread Starter

8051HELP

Joined Nov 27, 2015
5
I need to write only numbers (every second) in string on display (memory mapped on 0x8001 adress) which are divding with 2 .

I must use counter not delay () for interrupt ...


Below is code which i imagine but dont work correctly...

[ CODE ]

#include <reg51.h>
#include <math.h>
typedef unsigned char byte;
byte a[3]= {2,1,8};

byte counter, frequency,displ;
int i=0;
byte xdata display _at_ 0x8001;

sbit switcher=P0^0;


void Inic(void) {
EA=1;
ET0=1;
TMOD=1;
TH0=0x3C;
TL0=0xB0;
TR0=1;
counter=1;
frequency=0;
}

void timer0(void) interrupt 1 using 2 {
TR0=0;
TH0=0x3C;
TL0=0xB0;
TR0=1;

if(switcher) {
if(!(--counter)) {
counter=frequency;

display=displ;






}} }



void main(void) {
Inic();
while(1) {

if(switcher) {
for (i=0;i<3;i++) {
if(a/2) {
displ=a;
frequency=20;

} } } } }

[ CODE ]
 
Top