⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 S12开发包相关的codewarrior工程LED00.rar
💻 C
字号:

/* LEDS.C example file for Motorola MC9S12DP256 Evaluation Board */

#include <hidef.h>

/* port B definitions */
#define PORTB    (*((volatile unsigned char*)(0x0001)))     
#define DDRB     (*((volatile unsigned char*)(0x0003))) 

/* Timer TCNT definitions */
#define TSCR1    (*((volatile unsigned char*)(0x0046))) 
#define TSCR2    (*((volatile unsigned char*)(0x004D))) 
#define TFLG2    (*((volatile unsigned char*)(0x004F))) 
#define TCNT     (*((volatile unsigned short*)(0x0044))) 
  
int counter;

void TimerOverflow(void) {
/* This function waits for th timer overflow.
Then it changes the LEDs bargraph display */
  while (TCNT != 0x0000);
  while (TCNT == 0x0000);
  counter++;    
  if (counter == 8) PORTB = 0x7e; /* LEDs' lightshow */
  if (counter == 7) PORTB = 0xbd;
  if (counter == 6) PORTB = 0xdb;
  if (counter == 5) PORTB = 0xe7;
  if (counter == 4) PORTB = 0xe7;
  if (counter == 3) PORTB = 0xdb;
  if (counter == 2) PORTB = 0xbd;
  if (counter == 1) PORTB = 0x7e;
}

void main(void)
{
  TSCR1 = 0x80; /* enable timer TCNT */
  TSCR2 = 0x03; /* TCNT prescaler setup */
  counter = 0;
   
  DDRB=0xff; /* PTB as output */
  PORTB=0xff;  /* LEDs off */
  asm{
  nop
  } 
  for (;;)
  { 
    TimerOverflow();
    if (counter >= 8) {
         counter = 0;
         TSCR2 = 0x05;  /* TCNT prescaler switch */ 
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -