8051 Atmel 89C51 programming in C example

Discussion in 'Embedded Systems and Microcontrollers' started by 8051HELP, Nov 27, 2015.

  1. 8051HELP

    Thread Starter New Member

    Nov 27, 2015
    3
    0
    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 ]
     
Loading...