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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? slave.c

?? 摩托羅拉公司發布的QL4的Lin總線kit,freescale網站上花錢買的
?? C
字號:

/***********************************************************
Demo software for QL4 LINKit

Application Code:  Steve McAslan 
SLIC driver Code:  Matt Ruff

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

#include <hidef.h>
#include <startup.h>
#include "MC68HC908QL4.h"
#include "global.h"

#define debounce 1                                
#define modecount 145                              

// --- Use only one of the two following define statements --
#define QL4LINKit					// Use this define for the QL4 LINkit Board
//#define QL4EVB						// Use this define for the QL4 EVB Board

static unsigned char temp_msg_buffer[8];	// Temporary storage of SLIC buffer contents;
unsigned char LINdata;
unsigned char LINID;
unsigned char BusOff;
extern unsigned char LINSleep;

unsigned char data = 1;
unsigned char ID = 0;
unsigned char key_last;
unsigned char count;
unsigned char mode;

int keycount;

// Function Prototypes
void Read_button (unsigned char);
void LED_display (void);
void init_hardware(void);
void Check_LIN_Sleep(void);
extern void SLIC_Init(void);


void LIN_message (unsigned char data, unsigned char ID)
	{
    LINdata = data;
    switch (ID)
    	{
        case 0 : LINID = 0x11;  break;        
        case 1 : LINID = 0x92;  break;
        case 2 : LINID = 0xD3;  break;
        case 3 : LINID = 0x50;  break;
        default: LINID = 0x11;  break;
    	}
	}//_________end LIN_message________

void main(void)
	{ 
	CONFIG1 = 0x09;             /* disable COP             */
	CONFIG2 = 0x00;             /* default (int. osc.)     */
	TSC = 0x00;                 /* Start timer */
	BusOff = 0;

	init_hardware();
	SLIC_Init();					

	SLCC1_SLCIE = 1;			// Enable SLIC Interrupt Flag
	EnableInterrupts;

	#ifdef QL4LINKit			// Initialize IO pins for LED display and button reads
	PTB_PTB0 = 1;			// D8 -- LED outputs
	PTB_PTB1 = 0;			// D7
	PTB_PTB2 = 0;   		// D6
	PTB_PTB6 = 0;			// D5
	DDRB_DDRB0 = 1;			// D8 -- Set pins as outputs
	DDRB_DDRB1 = 1;			// D7
	DDRB_DDRB2 = 1;			// D6
	DDRB_DDRB6 = 1;			// D5

	PTB_PTB7 = 1;			// Enable 33399 physical layer device
	DDRB_DDRB7 = 1;			// EN pin on MC33399
	#endif

	#ifdef QL4EVB				// Initialize IO pins for LED display and button reads
	PTB_PTB0 = 0;			// D1 - LED Inverse logic -- LED outputs
	PTB_PTB1 = 0;			// NC
	PTB_PTB2 = 0;   		// NC
	PTB_PTB6 = 0;			// NC
	DDRB_DDRB0 = 1;			// D1 -- Set pins as outputs
	DDRB_DDRB1 = 1;			// NC
	DDRB_DDRB2 = 1;			// NC
	DDRB_DDRB6 = 1;			// NC

	PTB_PTB7 = 1;			// Enable MC33661 eLIN physical layer device
	DDRB_DDRB7 = 1;			// EN pin on MC33661
							// Make sure jumper 'LIN_EN' is on pins 1 & 2 for SW control
	#endif
            
	while(1)
   		{
        COPCTL = 0;  					// clear the COP counter
        if (TSC & 0x80)                 // is overflow flag set?
        	{
            TSC &= ~(0x80);             // yes, clear it           
            count++;                    // used for LED flashing      

            if ((PTA & 0x20) == 0x20)	// toggle tick output      
            	{
                PTA &= ~(0x20);
            	}
            else
           		{
                PTA |= 0x20;
            	}
			#ifdef QL4LINKit						// Initialize button for LINkit 
	        Read_button (PTA_PTA1);         		// read button on PTA1
			#endif
			#ifdef QL4EVB							// Initialize button for EVB
	        Read_button (PTA_PTA3);         		// read button on PTA3
			#endif

            LED_display ();  	                      // update LEDs on PTB0-2,6
            LIN_message (data,ID);                    // update LIN response msg.
            Check_LIN_Sleep();						  // Check to see if LINSleep is set
       		}						// end if(TSC &0x08)
    	}						// end while(1)
	}						// end main()


/******************************************************************************
*                                                                             *
*    Function name: LED_display                                               *
*    Originator:    P. Topping                                                *
*    Date:          4th September 2003                                        *
*    Function:      According to mode, the LEDs display the 4-bit data field  *
*                   or the flashing ID (0:19, 1:1A, 2:1B, 3:18).              *
*                   The LEDs are switched separately so that the compiler     *
*                   uses only BSETs and BCLRs thus avoiding an STA to port B  *
*                   which would be incompatible with the LIN drivers.         * 
*                                                                             *
******************************************************************************/
void LED_display (void)
	{
	unsigned char LEDs;
 
    if (mode)
    	{
        if (count & 0x04)
        	{
            LEDs = 1 << (ID+3);                   // ID mode LED display
       		}
        else
        	{
            LEDs = 0;                             // ID mode flash, LEDs off
       		}
    	}
    else                                          // normal mode so
    	{
        LEDs = data << 3;                         // drive LEDs with data
    	}
    
	#ifdef QL4LINKit							   // LED active high 
    if (LEDs & 0x08) PTB_PTB0 = 1; else PTB_PTB0 = 0; 
	#endif
	#ifdef QL4EVB								  // LED inverse logic
    if (LEDs & 0x08) PTB_PTB0 = 0; else PTB_PTB0 = 1; 
	#endif
    if (LEDs & 0x10) PTB_PTB1 = 1; else PTB_PTB1 = 0; 
    if (LEDs & 0x20) PTB_PTB2 = 1; else PTB_PTB2 = 0; 
    if (LEDs & 0x40) PTB_PTB6 = 1; else PTB_PTB6 = 0; 
	}        

/******************************************************************************
*    Function name: init_hardware                                             *
*    Originator:                                                              *
*    Date:                                                                    *
*    Function:                                                                *
******************************************************************************/
void init_hardware(void) 
	{
	OSCTRIM = Optional;		// Pull TRIM from FFC0	
	}

/******************************************************************************
*                                                                             *
*    Function name: Read_button                                               *
*    Originator:    P. Topping                                                *
*    Date:          21st June 2003                                            *
*    Function:      The port line is read and its level compared with what    *
*                   it was the previous time through the loop. If it is the   *
*                   same, the counter "keycount" is used for debounce (80ms)  *
*                   and to decide if the same state has been present long     *
*                   enough (3 seconds) for a mode change. In each mode the    *
*                   appropriate increment (data or ID) takes place.           *
*                   If the switch status changes the counter is reset.        *
*                                                                             *
******************************************************************************/
void Read_button (unsigned char key)
	{
    if (key == key_last)                          // same as last time ?
    	{
        if (keycount == debounce)                 // yes, (debounce + 2)th ?
        	{
            if (key == 0)                         // yes, key pressed ?
            	{
                if (mode)                         // yes, ID mode ?
                	{
                    ID++;                         // yes, increment ID
                    if (ID == 4) ID = 0;          // wrap round from 3 to 0
                	}
                else                              // no, normal mode
                	{
                    data++;                       // increment data
                    if (data == 16) data = 1;     // wrapping from 15 to 1
                	}

				LINSleep=0;						  // Clear LINSleep flag
												  // on button press
            	}
            keycount ++;                          // prevents re-entry
        	}
        else if (keycount < modecount)            // prevents wraparound
        	{
            keycount ++;
        	}
        if (keycount == modecount)                // time for modechange ?
        	{
            if (key == 0)                         // yes, key pressed ?
            	{
                mode = 1;                         // yes, change to ID mode
            	}
            else                                  // no key pressed
            	{
                mode = 0;                         // so back to normal mode
            	}
        	}
    	}
    else
    	{   
        keycount = 0;                             // no, different, so reset 
        key_last = key;                           // count and save status 
    	}
	}

/******************************************************************************
*    Function name: Check_LIN_Sleep                                           *
*    Originator:    Matt Ruff                                                 *
*    Date:          10 Nov 2003                                               *
*    Function:      This function checks the LINSleep flag and turns off      *
* 					the LED display when LINSleep is set. If LINSleep is clear*
*					then it allows LED_Display to turns LEDs back on again    *
******************************************************************************/
void Check_LIN_Sleep(void)
	{
	if (LINSleep==1)
		{
		#ifdef QL4LINKit			// Turn off LEDS to indicate SLEEP to user
			PTB_PTB0 = 0;			// D8 -- LED outputs
			PTB_PTB1 = 0;			// D7
			PTB_PTB2 = 0;   		// D6
			PTB_PTB6 = 0;			// D5
			DDRB_DDRB0 = 0;			// D8 -- Set as inputs so LED display doesn't update
			DDRB_DDRB1 = 0;			// D7
			DDRB_DDRB2 = 0;			// D6
			DDRB_DDRB6 = 0;			// D5
		#endif
		#ifdef QL4EVB				// Turn off LEDS to indicate SLEEP to user
			PTB_PTB0 = 1;			// D1 - LED Inverse logic -- LED outputs
			PTB_PTB1 = 0;			// NC
			PTB_PTB2 = 0;   		// NC
			PTB_PTB6 = 0;			// NC
			DDRB_DDRB0 = 0;			// D1 -- Set as inputs so LED display doesn't update
			DDRB_DDRB1 = 0;			// NC
			DDRB_DDRB2 = 0;			// NC
			DDRB_DDRB6 = 0;			// NC
		#endif
		}
	else							// LINSleep is clear, so enable LED outputs
		{
		#ifdef QL4LINKit			// Initialize IO pins for LED display and button reads
			DDRB_DDRB0 = 1;			// D8 -- Set pins as outputs
			DDRB_DDRB1 = 1;			// D7
			DDRB_DDRB2 = 1;			// D6
			DDRB_DDRB6 = 1;			// D5
		#endif
		#ifdef QL4EVB				// Initialize IO pins for LED display and button reads
			DDRB_DDRB0 = 1;			// D1 -- Set pins as outputs
			DDRB_DDRB1 = 1;			// NC
			DDRB_DDRB2 = 1;			// NC
			DDRB_DDRB6 = 1;			// NC
		#endif
		}

	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品无人区卡一卡二卡三乱码免费卡| 久久精品男人天堂av| 亚洲欧美激情插 | 亚洲超碰97人人做人人爱| 在线区一区二视频| 亚洲成在线观看| 欧美一级一级性生活免费录像| 爽爽淫人综合网网站| 91精品国产一区二区三区蜜臀| 另类调教123区| 国产午夜精品一区二区三区四区| 东方欧美亚洲色图在线| 成人欧美一区二区三区小说| 欧美亚洲动漫精品| 久久综合综合久久综合| 欧美经典一区二区三区| 91日韩一区二区三区| 天堂蜜桃91精品| 久久久久久毛片| 色综合天天综合网国产成人综合天 | 综合婷婷亚洲小说| 欧美日韩国产系列| 国产中文一区二区三区| 亚洲欧美经典视频| 欧美一区二区三区在线看| 国产九色精品成人porny | 亚洲精品国产a久久久久久| 欧美日韩aaaaaa| 国产成人亚洲综合a∨猫咪| 国产精品久久综合| 精品久久久影院| www..com久久爱| 日韩1区2区3区| 国产精品无遮挡| 在线亚洲一区二区| 精东粉嫩av免费一区二区三区| 国产精品免费久久久久| 欧美丰满少妇xxxbbb| 懂色av噜噜一区二区三区av| 日韩成人av影视| 亚洲欧洲三级电影| 欧美一级精品在线| 色网站国产精品| 国产成人免费视频网站高清观看视频 | 亚洲成av人**亚洲成av**| 中文字幕av资源一区| 91精品国产色综合久久ai换脸 | 在线成人免费观看| 97精品国产露脸对白| 精品一区二区三区视频| 亚洲自拍另类综合| 国产精品美女视频| 日韩精品专区在线| 欧美日本一区二区三区| 一本久久综合亚洲鲁鲁五月天| 国产麻豆精品一区二区| 偷拍日韩校园综合在线| 中文字幕av不卡| 国产亚洲一区二区三区在线观看| 51精品久久久久久久蜜臀| 在线亚洲高清视频| 99re视频精品| 99国产精品国产精品毛片| 国产99一区视频免费| 国产伦精品一区二区三区免费| 青青国产91久久久久久| 亚洲bt欧美bt精品| 亚洲综合成人在线视频| 亚洲精品精品亚洲| 亚洲欧美日韩综合aⅴ视频| 欧美激情艳妇裸体舞| 精品久久久久久久久久久院品网| 在线观看91精品国产麻豆| 在线免费观看日本欧美| 色婷婷综合久久| 一本到不卡精品视频在线观看| 成人不卡免费av| 播五月开心婷婷综合| 成人涩涩免费视频| 91一区一区三区| 色呦呦国产精品| 欧美伊人久久久久久久久影院| 日本高清免费不卡视频| 91免费视频观看| 91麻豆精品在线观看| 91丨porny丨最新| 91免费看片在线观看| 91久久线看在观草草青青| 欧洲av在线精品| 在线电影院国产精品| 日韩欧美的一区二区| 久久综合久久综合亚洲| 欧美精品一区二区不卡| 国产女主播一区| 一色屋精品亚洲香蕉网站| 亚洲人亚洲人成电影网站色| 亚洲免费视频中文字幕| gogo大胆日本视频一区| 不卡视频一二三四| 欧洲精品在线观看| 欧美一区二区三区小说| 久久久精品中文字幕麻豆发布| 欧美激情一区不卡| 一区二区三区波多野结衣在线观看| 亚洲风情在线资源站| 蜜桃久久久久久| 国产成人三级在线观看| 91成人网在线| 日韩女优视频免费观看| 日本一区二区三区在线观看| 亚洲综合色区另类av| 黄色成人免费在线| 972aa.com艺术欧美| 制服.丝袜.亚洲.另类.中文| 国产亚洲成av人在线观看导航| 中文字幕亚洲一区二区va在线| 亚洲成a人片在线观看中文| 国产专区综合网| 欧美性一区二区| 久久一夜天堂av一区二区三区 | 亚洲欧美日韩人成在线播放| 日韩国产高清影视| av中文字幕不卡| 日韩欧美一二三四区| 亚洲图片欧美激情| 精品一区二区三区免费播放| 91社区在线播放| 久久无码av三级| 亚洲福利一二三区| 成人激情动漫在线观看| 69堂精品视频| 亚洲激情欧美激情| 国产精品自拍一区| 91精品国产一区二区三区蜜臀| 亚洲欧洲另类国产综合| 日本高清不卡一区| 国产三级精品三级在线专区| 天堂久久久久va久久久久| 99久久精品费精品国产一区二区| 日韩一区二区三区电影| 亚洲欧美成aⅴ人在线观看| 国产精品一二三四区| 欧美日韩亚洲综合在线 | 99热精品一区二区| 欧美v国产在线一区二区三区| 奇米精品一区二区三区在线观看 | 91色.com| 国产精品久久福利| 国产精品996| 欧美激情一区二区三区不卡| 国内成人免费视频| 亚洲精品在线一区二区| 麻豆国产精品官网| 欧美本精品男人aⅴ天堂| 蜜桃视频第一区免费观看| 在线观看91精品国产麻豆| 午夜伦理一区二区| 欧美精品一区二区高清在线观看| 奇米影视一区二区三区| 欧美一区二区高清| 麻豆国产精品一区二区三区| 26uuu欧美| 色综合天天综合| 日本视频一区二区| 精品久久久久久久久久久久包黑料 | 亚洲精品国产高清久久伦理二区| 色综合久久久久综合体桃花网| 日本一区二区三区四区| 91精品国产欧美日韩| 久久精工是国产品牌吗| 成人午夜私人影院| 一卡二卡欧美日韩| 日韩一区二区在线播放| 国产精品影视天天线| 成人激情开心网| 精品乱人伦小说| 亚洲高清免费在线| 亚洲综合久久久| 91福利在线播放| 亚洲成av人片一区二区梦乃| 欧美男人的天堂一二区| 老司机精品视频导航| 2020国产精品自拍| 成人av资源站| 亚洲精品国产成人久久av盗摄| 欧美日韩精品欧美日韩精品| 日本一区中文字幕| www日韩大片| 99久久久精品免费观看国产蜜| 亚洲你懂的在线视频| 欧美日韩亚洲高清一区二区| 全部av―极品视觉盛宴亚洲| 欧美www视频| 波多野结衣中文字幕一区二区三区| 亚洲欧美日韩久久| 日韩一区二区三区电影在线观看| 国产精品一线二线三线| 一区二区三区四区亚洲| 国产三级精品三级| 欧美色偷偷大香|