• Embedded之Introduction


    1  Embedded system

      An embedded system is a combination of computer hardware and software, and perhaps additional mechanical or other parts, designed to perform a specific function. (E.g. microwave oven)

    2  Infinite loop

      One of the most fundamental differences between programs developed for embedded systems and those written for other computer platforms is that the embedded programs almost always end with an infinite loop.

      The infinite loop is necessary because the embedded software's job is never done. It is intended to be run until either the world comes to an end or the board is reset, whichever happens first.

    3  Blinking LED

     1 /********************************************************************** 
     2  * 
     3  * Function:    main() 
     4  * 
     5  * Description: Blink the green LED once a second. 
     6  *  
     7  * Notes:       This outer loop is hardware-independent.  However,  
     8  *              it depends on two hardware-dependent functions. 
     9  * 
    10  * Returns:     This routine contains an infinite loop. 
    11  * 
    12  **********************************************************************/ 
    13 void main(void) 
    14 { 
    15     while (1) 
    16     { 
    17         toggleLed(LED_GREEN);      /* Change the state of the LED.    */ 
    18         delay(500);                /* Pause for 500 milliseconds.     */ 
    19     } 
    20 }

      3.1  toggleLed

     1 /********************************************************************** 
     2  * 
     3  * Function:    toggleLed() 
     4  * 
     5  * Description: Toggle the state of one or both LEDs. 
     6  * 
     7  * Notes:       This function is specific to Arcom's Target188EB board. 
     8  * 
     9  * Returns:     None defined. 
    10  * 
    11  **********************************************************************/ 
    12  
    13 #define LED_GREEN   0x40        /* The green LED is controlled by bit 6.*/ 
    14 #define P2LTCH      0xFF5E      /* The offset of the P2LTCH register. */ 
    15 
    16 void toggleLed(unsigned char ledMask) 
    17 { 
    18     asm { 
    19         mov dx, P2LTCH          /* Load the address of the register.  */ 
    20         in  al, dx              /* Read the contents of the register. */ 
    21  
    22         mov ah, ledMask         /* Move the ledMask into a register.  */ 
    23         xor al, ah              /* Toggle the requested bits.         */ 
    24  
    25         out dx, al              /* Write the new register contents.   */ 
    26     }; 
    27  
    28 }   /* toggleLed() */ 

      3.2  delay

     1 /********************************************************************** 
     2  * 
     3  * Function:    delay() 
     4  * 
     5  * Description: Busy-wait for the requested number of milliseconds. 
     6  * 
     7  * Notes:       The number of decrement-and-test cycles per millisecond 
     8  *              was determined through trial and error.  This value is 
     9  *              dependent upon the processor type and speed. 
    10  * 
    11  * Returns:     None defined. 
    12  * 
    13  **********************************************************************/ 
    14  
    15 void delay(unsigned int nMilliseconds) 
    16 { 
    17     #define CYCLES_PER_MS 260 /* Number of decrement-and-test cycles. */ 
    18  
    19     unsigned long nCycles = nMilliseconds * CYCLES_PER_MS; 
    20  
    21     while (nCycles--); 
    22  
    23 }   /* delay() */ 
  • 相关阅读:
    (二)、一步一步学GTK+之窗口
    phpcms v9 评论的bug.
    为discuz x2.5添加播放附件(mp4)的方法
    code::blocks + C + lua 编译环境
    C语言从声卡录音的一个demo
    泛型集合(.NET 2.0)
    VS2008对ASP.NET引用的外部JS文件不能调试
    for循环和foreach
    CSS之DIV上下左右居中
    GridView控件相关(来自互联网)
  • 原文地址:https://www.cnblogs.com/mengdie/p/4430207.html
Copyright © 2020-2023  润新知