亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? demo.c

?? IAR-2148.rar 這是IAR上做的2148所有的例程
?? C
字號(hào):
/******************************************************************************
Example program to show how to send characters out of UART0 by polling. Char-
acters are sent out at rate of 1 every 10milliseconds. The data to be trans-
mitted is stored in a static string that wraps to beginning when the last char-
acter in the buffer is sent.

This example does not use the PLL to mulitply the main clock frequency, so the
main bus is running at 12MHz and the peripheral clock at 3MHz.

Notice that in this example, the statement VICVectAddr = 0; which is necessary
to signal the completion of an interrupt service routine, has been moved to
the __irq function. If you have a lot of interrupt sources, this saves redund-
ancy in code.

The foreground task transmits the characters every time the 50msec timer
expires. Use hyperterm or other terminal emulator with no flow control.

9 Jun 05
Usage note: if you do not see characters on hyperterm, halt the program by
clicking on the red hand, then restart.

10 Jun 05
Enabling FIFO buffers with U1FCR = 1; per Anders Lundgren's advice.

******************************************************************************/

#include "demo.h"

void main(void)
{
  SoftwareTimer_t *ptr2Timer = &softTimer[0];
  char *ptr2Str = &textString[0];

  initializeInterruptDataStructs();
  installTimer(ptr2Timer,FIFTY_mSEC_TIMER,TICKS_PER_50mSEC,  // install 50msec
               FIFTY_mSEC_TIMER_INSTALLED);                  // s'ware timer

  /* This if-else statement detects if interrupt vectors located by the linker
  command file are at memory location 0 or not. If so, MEMMAP is set to 1 to run
  program out of flash
  */
  #pragma segment = "INTVEC"
  if (( void * )0x00000000UL == __segment_begin( "INTVEC" ))
  {
    MEMMAP = 1;  // normal flash mode
  }
  else
  {
    MEMMAP = 2 ; // user ram mode - Map lowest 64 bytes of the address space to
                 //bottom of internal RAM, moving exception vectors into place
  }

  /* This section of code configures Timer 0, match channel 0 to interrupt on
  matching the value stored in MR0 */
  T0IR=0xFF;           // reset match and capture event interrupts
  T0TCR=0;             // Disable counting
  T0TC=0;              // Clear timer counter
  T0PR= 0;             // No Prescalar
  T0PC=0;              // Clear prescaler timer counter
  T0MR0=PCLKFREQ/100;  // Count up to 36,864 for 100Hz interrupt, period = 10ms
  T0MCR |= (RESET | INT_ON_MATCH);  // Reset Timer Counter & Interrupt on match
  T0TCR &= ~2;         // Clear reset flag
  T0TCR = 1;           // Counting enable

  /* Preliminary setup of the VIC. Assign all interrupt chanels to IRQ */
  VICIntSelect  =  0;             // Set all VIC interrupts to IRQ for now
  VICIntEnClear = 0xFFFFFFFF;     // Diasable all interrupts
  VICSoftIntClear = 0xFFFFFFFF;   // Clear all software interrutps
  VICProtection = 0;              // VIC registers can be accessed in User or
                                  // privileged mode
  VICVectAddr = 0;                // Clear interrupt
  VICDefVectAddr = 0;             // Clear address of the default ISR

  /*Configure the pins that are connected to RX and TX on UART1 */
  PINSEL0 = (1<<ENABLE_UART1_RX) | (1<< ENABLE_UART1_TX); // PINSEL0 = 0x50000

  /*Configure UART1 to 9600 buad, 8 bit, 1 stop, no parity */
  U1FCR = 1;                      // Enable FIFOs whether used or not
  SetBit(U1LCR,DIVISOR_LATCH_SET_bit); // U1LCR = 0X80-enable access to divisor
                                  // latch bit, necessary for setting baud rate
  U1LCR |= EIGHT_BIT_CHARS;       // Eight bits U1LCR = 0X83
  ClrBit(U1LCR,PARITY_ENABLE_bit);     // No parity
  ClrBit(U1LCR,STOP_BIT_SELECT_bit);   // One stop bit
  U1DLL = PCLKFREQ / (9600 * 16);
  U1DLM = (PCLKFREQ / (9600 * 16)) >> 8;
  ClrBit(U1LCR,DIVISOR_LATCH_SET_bit); // Disable access to divisor latch

  /* Clear the VICVectAddress slots 0-15 and VICVectCtrl slots 0-15 */
  VICVectAddr0  = \
  VICVectAddr1  = \
  VICVectAddr2  = \
  VICVectAddr3  = \
  VICVectAddr4  = \
  VICVectAddr5  = \
  VICVectAddr6  = \
  VICVectAddr7  = \
  VICVectAddr8  = \
  VICVectAddr9  = \
  VICVectAddr10 = \
  VICVectAddr11 = \
  VICVectAddr12 = \
  VICVectAddr13 = \
  VICVectAddr14 = \
  VICVectAddr15 = 0;

                                  // Disable all vectored IRQ slots
  VICVectCntl0  = \
  VICVectCntl1  = \
  VICVectCntl2  = \
  VICVectCntl3  = \
  VICVectCntl4  = \
  VICVectCntl5  = \
  VICVectCntl6  = \
  VICVectCntl7  = \
  VICVectCntl8  = \
  VICVectCntl9  = \
  VICVectCntl10 = \
  VICVectCntl11 = \
  VICVectCntl12 = \
  VICVectCntl13 = \
  VICVectCntl14 = \
  VICVectCntl15 = 0;

  /* This section installs the specific interrupts and configure the VIC
  control registers and sets them as IRQs */
  VICProtection = 0;                           // Accesss VIC in USR | PROTECT
  VICDefVectAddr = (unsigned int)&NonVectISR;  // Install default ISR addr


   /*Configure UART1 to 9600 buad, 8 bit, 1 stop, no parity */
  U1FCR = 1;                      // Enable FIFOs whether used or not
  SetBit(U1LCR,DIVISOR_LATCH_SET_bit); // U1LCR = 0X80-enable access to divisor
                                  // latch bit, necessary for setting baud rate
  U1LCR |= EIGHT_BIT_CHARS;       // Eight bits U1LCR = 0X83
  ClrBit(U1LCR,PARITY_ENABLE_bit);     // No parity
  ClrBit(U1LCR,STOP_BIT_SELECT_bit);   // One stop bit
  U1DLL = PCLKFREQ / (9600 * 16);
  U1DLM = (PCLKFREQ / (9600 * 16)) >> 8;
  ClrBit(U1LCR,DIVISOR_LATCH_SET_bit); // Disable access to divisor latch

  /* Setup the Timer0 interrupt on match interrupt */
  VICIntSelect &= ~(1<<VIC_TIMER0);            // Timer 0 intrpt is an IRQ
  VICVectAddr0 = (unsigned int)&MM_TIMER0_ISR; // Install ISR in VIC addr slot
  VICVectCntl0 = 0x20 | VIC_TIMER0;            // IRQ type, TIMER 0 int enabled
  VICIntEnable |= (1<<VIC_TIMER0);             // Turn on Timer0 Interrupt

  __enable_interrupt();                         // Global interrupt enable


  /*This is the foreground loop, which looks at data coming from the background
  loop. The user can insert own code to react to timer and button driven
  events */
  while(TRUE)                                      // Foreground Loop
  {
    if(softTimer[FIFTY_mSEC_TIMER].us_Event == TIMER_EXPIRED)
    {
        installTimer(ptr2Timer,FIFTY_mSEC_TIMER,TICKS_PER_50mSEC,
               FIFTY_mSEC_TIMER_INSTALLED);       // reinstall 50msec timer
      if(*ptr2Str == '\0')
      {
        sendByte(0xD);                            // carriage return;
        sendByte(0xA);                            // line feed
        ptr2Str = &textString[0];                 // wrap to start of string
      }
      sendByte(*ptr2Str++);                       // transmit next character
    }


  } // end foreground loop
}   // end main()

void installTimer
(
  SoftwareTimer_t *ptr2Timer,
  unsigned int us_offset,
  unsigned int us_ticks,
  unsigned int us_event
)
{
  (ptr2Timer+us_offset)->us_Ticks = us_ticks;
  (ptr2Timer+us_offset)->us_Event = us_event;
}

void initializeInterruptDataStructs(void)
{
  unsigned int i;
  for(i=0;i<MAX_SOFTWARE_TIMERS;i++)
  {
    softTimer[i].us_Ticks = 0;
    softTimer[i].us_Event = EVENT_UNDEFINED;
  }
}

/*************************************************************************
 * Function Name: IRQ_ISR_Handler
 * Parameters: void
 * Return: void
 *
 * Description: IRQ subroutine
* Note: This is ARM mode code - full 32 bit code	
 *************************************************************************/
#pragma vector=0x18
__irq __arm void IRQ_ISR_Handler (void)
{
  void (*interrupt_function)();
  unsigned int vector;

  vector = VICVectAddr;     // Get interrupt vector.
  interrupt_function = (void(*)())vector;
  (*interrupt_function)();  // Call vectored interrupt function thru pointer
  VICVectAddr = 0;          // Clear interrupt in VIC
}

/*************************************************************************
 * Function Name: MM_TIMER0_ISR
 * Parameters: void
 * Return: void
 *
 * Description: TIMER0 interrupt subroutine
 *
 *************************************************************************/
void MM_TIMER0_ISR()
{
  unsigned int IntType;
  unsigned int i;
  for(i=0; i<MAX_SOFTWARE_TIMERS; i++)
    if(softTimer[i].us_Ticks > 1)            // if timer installed decrement
      softTimer[i].us_Ticks--;
    else
      softTimer[i].us_Event = TIMER_EXPIRED; // us_Ticks == 1; timer expired

  IntType = (T0IR & 0xFF);                   // confirm interrupt type
  T0IR = (IntType & 0xFF);                   // Clear timer interrupt
}

void NonVectISR(void)
{
  while(TRUE);           // You should never get here, so spin in tight loop
                         // to signal something is amiss
}

void sendByte(char byte)
{
    while (!(U1LSR &0x20)); //U1THR THRE bit set when U1THR contains valid data
    U1THR = byte;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆久久一区二区| 久久精品99国产精品日本| 久久众筹精品私拍模特| 欧美一区二区视频网站| 欧美一级高清大全免费观看| 欧美一区二区播放| 精品久久国产字幕高潮| 精品国产欧美一区二区| 精品成人一区二区三区| 国产午夜亚洲精品午夜鲁丝片| 久久久不卡网国产精品一区| 久久免费国产精品| 国产精品免费aⅴ片在线观看| 国产精品三级av| 一区二区三区在线免费| 日韩激情一区二区| 国产自产2019最新不卡| www.亚洲免费av| 欧美色视频一区| 欧美va日韩va| 18欧美乱大交hd1984| 亚洲线精品一区二区三区八戒| 调教+趴+乳夹+国产+精品| 蜜桃av噜噜一区二区三区小说| 国产99久久久国产精品免费看| 91美女片黄在线观看91美女| 91麻豆精品国产自产在线| 久久综合av免费| 亚洲一区二区四区蜜桃| 国精产品一区一区三区mba视频| 成人小视频在线| 91超碰这里只有精品国产| 久久婷婷一区二区三区| 一级精品视频在线观看宜春院| 欧美aaaaa成人免费观看视频| 国产专区综合网| 欧美日韩高清一区| 国产精品久久福利| 久久国产精品一区二区| 色88888久久久久久影院野外| 日韩视频免费直播| 一区二区成人在线观看| 成人一二三区视频| 日韩欧美亚洲国产精品字幕久久久| 国产精品欧美久久久久无广告| 丝袜a∨在线一区二区三区不卡 | 精品国产一区二区三区久久影院| 国产精品三级久久久久三级| 久久精品国产一区二区| 91黄色免费观看| 国产精品色婷婷| 国产一区二区三区不卡在线观看| 欧美精品粉嫩高潮一区二区| 日韩一区欧美一区| 成人av集中营| 中文字幕精品—区二区四季| 久久99在线观看| 日韩美一区二区三区| 偷拍自拍另类欧美| 欧美日韩在线播放| 亚洲精品va在线观看| 不卡av在线免费观看| 中文字幕精品三区| 成人免费高清在线观看| 久久精品水蜜桃av综合天堂| 国产揄拍国内精品对白| 日韩美女在线视频| 狠狠v欧美v日韩v亚洲ⅴ| 日韩欧美国产wwwww| 蜜桃视频免费观看一区| 91精品国产综合久久久蜜臀图片 | 国产精品白丝jk黑袜喷水| 精品欧美一区二区三区精品久久 | 成人深夜在线观看| 国产欧美日韩在线看| 韩国欧美国产一区| 国产午夜精品久久久久久久| 国产精品一卡二卡在线观看| 久久久久久久综合| 成人久久久精品乱码一区二区三区| 国产日韩欧美高清在线| 成人av电影在线| 一区二区激情视频| 欧美久久一二区| 久久99精品国产91久久来源| 精品精品国产高清a毛片牛牛| 精品一区二区三区在线播放视频| 久久免费视频一区| 99国产精品国产精品毛片| 亚洲视频网在线直播| 欧美色偷偷大香| 激情五月婷婷综合网| 国产精品嫩草影院com| 91亚洲精品乱码久久久久久蜜桃| 夜夜嗨av一区二区三区四季av| 欧美三级乱人伦电影| 国产综合色精品一区二区三区| 国产精品女人毛片| 欧美精品电影在线播放| 韩国理伦片一区二区三区在线播放| 中国av一区二区三区| 欧美日韩卡一卡二| 福利电影一区二区三区| 亚洲18色成人| 国产欧美一区二区精品性色超碰| 成人国产一区二区三区精品| 三级一区在线视频先锋| 国产精品入口麻豆九色| 欧美人体做爰大胆视频| 风间由美一区二区三区在线观看| 伊人性伊人情综合网| 精品久久免费看| 在线免费一区三区| 国产精品亚洲午夜一区二区三区| 亚洲香肠在线观看| 中日韩av电影| 精品国产网站在线观看| 欧美午夜精品免费| 国产成人在线视频网站| 日本最新不卡在线| 亚洲码国产岛国毛片在线| 精品精品国产高清a毛片牛牛| 欧洲精品中文字幕| av亚洲精华国产精华精| 久久69国产一区二区蜜臀| 亚洲一级电影视频| 日本一区二区久久| 精品国产91乱码一区二区三区 | 国产自产高清不卡| 日本不卡不码高清免费观看| 中文字幕一区二区三区精华液| 精品国产一区二区三区久久久蜜月| 日本韩国欧美在线| 91亚洲精品乱码久久久久久蜜桃| 国产乱码精品一区二区三区五月婷| 日韩国产欧美在线观看| 亚洲综合图片区| 亚洲欧美成人一区二区三区| 国产欧美日韩三区| 久久亚洲一级片| 久久午夜老司机| 日韩欧美高清dvd碟片| 欧美一级一区二区| 在线不卡中文字幕播放| 欧美色区777第一页| 欧美又粗又大又爽| 欧美三区免费完整视频在线观看| k8久久久一区二区三区| 成人国产亚洲欧美成人综合网| 成人综合婷婷国产精品久久免费| 国产美女av一区二区三区| 久久99精品久久久久久| 国产一区二区不卡在线| 国产老女人精品毛片久久| 国产精品一区二区三区乱码| 国产精品一色哟哟哟| 国产福利一区在线| 波多野结衣视频一区| 97国产一区二区| 91污在线观看| 欧美偷拍一区二区| 日韩美女视频在线| 国产亚洲精品资源在线26u| 中文字幕精品一区二区三区精品| 最好看的中文字幕久久| 亚洲制服丝袜av| 美女尤物国产一区| 国产电影精品久久禁18| 99久久精品一区| 欧美日韩国产三级| 一区二区在线看| 亚洲va韩国va欧美va| 六月婷婷色综合| 99久久er热在这里只有精品66| 91免费视频观看| 日韩午夜av电影| 中文字幕av一区二区三区| 亚洲综合免费观看高清在线观看 | 日韩精品中文字幕在线一区| 久久精品视频免费观看| 亚洲欧美激情小说另类| 乱一区二区av| 91影院在线观看| 精品国产伦一区二区三区观看方式| 中文字幕一区二区在线播放| 亚洲观看高清完整版在线观看| 国产一区二区三区综合| 欧美影院午夜播放| 国产视频一区二区在线| 日韩制服丝袜av| 成人在线综合网站| 日韩欧美中文字幕一区| 国产精品国产三级国产三级人妇 | 久久99精品国产麻豆不卡| 日本韩国一区二区| 久久欧美一区二区| 丝袜美腿成人在线| 一本色道久久综合狠狠躁的推荐 | 欧美电影免费观看高清完整版在| 亚洲欧洲av一区二区三区久久|