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

📄 xtest11_1.c

📁 AT91sam7s 256 B/D example
💻 C
字号:
/* ========================================================================== */
/*	   Xtest11_1.c : Timer/Counter Waveform Generation(WAVSEL=10)	      */
/* ========================================================================== */
/*			  Designed and programmed by Duck-Yong Yoon in 2007.  */

#include "AT91SAM7S256.h"
#include "lib_AT91SAM7S256.h"
#include "OK7S256ads.h"

void LCD_4d(unsigned int number)		/* display 4-digit decimal number */
{ unsigned int i, flag;

  flag = 0;
  i = number/1000;				// 10^3
  if(i == 0) LCD_data(' ');
  else {     LCD_data(i + '0');
             flag = 1;
       }

  number = number % 1000;			// 10^2
  i = number/100;
  if((i == 0) && (flag == 0))
             LCD_data(' ');
  else {     LCD_data(i + '0');
             flag = 1;
       }

  number = number % 100;			// 10^1
  i = number/10;
  if((i == 0) && (flag == 0))
             LCD_data(' ');
  else {     LCD_data(i + '0');
             flag = 1;
       }

  i = number % 10;				// 10^0
  LCD_data(i + '0');
}

int main(void)
{
  unsigned int TC0_RA = 500;			// initial register value
  unsigned int TC0_RB = 1000;
  unsigned int TC0_RC = 1500;

  MCU_initialize();				// initialize AT91SAM7S256 & kit
  Delay_ms(50);					// wait for system stabilization
  LCD_initialize();				// initialize text LCD

  LCD_string(0x80,"KEY1:TC0_RA=0500");		// display title
  LCD_string(0xC0,"KEY2:TC0_RB=1000");
  Beep();

  AT91F_TC0_CfgPMC();				// enable clock of TC0
  AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, 0, AT91C_PA1_TIOB0 | AT91C_PA0_TIOA0);
  						// TIOA0,TIOB0 output(Peripheral B)

  *AT91C_TC0_CMR = 0x8989C402;			// TC0 Channel Control Register
  *AT91C_TC0_CCR = 0x0005;			// TC0 clock enable and start

  *AT91C_TC0_RA = TC0_RA;			// set TC0 register
  *AT91C_TC0_RB = TC0_RB;
  *AT91C_TC0_RC = TC0_RC;

  while(1)
    { switch(Key_input())
        { case 1 : TC0_RA += 100;		// increment TC0_RA by 100
                   if(TC0_RA == TC0_RC)
                     TC0_RA = 100;
                   *AT91C_TC0_RA = TC0_RA;	// new setting of TC0_RA
                   LCD_command(0x8C);		// display TC0_RA
                   LCD_4d(TC0_RA);
                   break;
          case 2 : TC0_RB += 100;		// increment TC0_RB by 100
                   if(TC0_RB == TC0_RC)
                     TC0_RB = 100;
                   *AT91C_TC0_RB = TC0_RB;	// new setting of TC0_RB
                   LCD_command(0xCC);		// display TC0_RB
                   LCD_4d(TC0_RB);
                   break;
        }
    }
}

⌨️ 快捷键说明

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