home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 September / PCWK996.iso / demo / wgelectr / emul51 / examples / adv_tra.c < prev    next >
C/C++ Source or Header  |  1991-08-22  |  1KB  |  62 lines

  1. #pragma code symbols debug objectextend
  2. /****************************************************************
  3.  *  This code has been written by Nohau Corporation for use     *
  4.  *  with the tutorial for the 'ADVANCED TRACE' board.           *
  5.  *  (c) 1991 by Nohau Corporation                               *
  6.  ****************************************************************/
  7.  
  8.  
  9. #include <reg51.h>
  10. #include <absacc.h>
  11. #include <intrins.h>
  12.  
  13.  
  14. union {
  15.   unsigned char c[4];
  16.   unsigned long i;
  17. } time = { 0,0,0,0 };
  18.  
  19. char reload = 0;
  20.  
  21. void extint0() interrupt 0
  22. {
  23.     INT0 = 1;        /* clear int. req. pin */
  24.     TL0 = reload+1;
  25.     TH0 = reload;
  26.     TR0 = 1;        /* restart timer0 */
  27. }
  28.  
  29. void timer0() interrupt 1
  30. {
  31.     TR0 = 0;        /* stop timer0 */
  32.     INT0 = 0;        /* clear pin to create high level int. */    
  33.     time.c[0]++;        /* increment on timer overflow */
  34.     if(time.c[0] == 0xff)
  35.         time.c[1]++;
  36. }
  37.  
  38. void initialize()
  39. {
  40.     TCON = 0x00;        /* clear control reg. = stop timers */
  41.     TMOD = 0x01;        /* Timer0 = 16bit timer */
  42.     IP = 0x01;        /* External int. 0 high level interrupt */
  43.     TL0 = reload+1;        /* PreLoad timer0 with 0001h */
  44.     TH0 = reload;
  45.     INT0 = 1;        /* assure ext. int. disabled */
  46.     IE = 0x83;        /* Enable interrupts T0, EX0 */
  47. }
  48.  
  49. void main()
  50. {
  51.     unsigned int delay = 65000;
  52.     unsigned int start;
  53.  
  54.     initialize();        /* setup SFR's for test program */    
  55.     TR0 = 1;        /* let timer go */
  56.  
  57.     while(1){
  58.         for(start = 0; start < delay ; start++)
  59.             time.i++;
  60.     }
  61. }
  62.