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

📄 hal.c

📁 1-wire"从机"模拟程序, 不是主机,1-wire的主机模拟程序网上很多.使用mega88模拟DS1990A芯片时序, 再加上模拟主机就可以搭建不使用DALASI芯片而使用1-wire协议的系统.
💻 C
字号:
/*
*********************************************************************************************************
*
* File    : HAL.C
* Data	  : March 20, 2007
*********************************************************************************************************
*/

#include "hal.h"

/*
*********************************************************************************************************
*                                         IOPORT_INIT
*
* Description      :
* Arguments        :
* Returned Values  : none
* Note(s)/Warnings :
*********************************************************************************************************
*/
inline void IOPORT_INIT(void)
{
        //--------------------------------------------------------------------------------------------//
        //| DDxn |PORTxn |   PUD    | I/O     |PULL-UP|   COMMENT                                     //
        //|      |       |(in MCUCR)|         |       |                                               //
		//|  0   |  0    |  x       | Input   | No    | Tri-state(Hi-z)                               //
		//|  0   |  1    |  0       | Input   | Yes   | Pxn will source current if ext. pulled low    //
		//|  0   |  1    |  1       | Input   | No    | Tri-state(Hi-z)                               //
		//|  1   |  0    |  x       | Output  | No    | Output Low(sink)                              //
		//|  1   |  1    |  x       | Output  | No    | Output High(sourced)                          //
		//--------------------------------------------------------------------------------------------//	

        //----------------------------------------------------------------------
          // PORTB  Function                NAME     I/O  DDRB PORTB
          // PB7    GIO/PCINT7/[X2]/TOSC2   -         O     1     0		output
          // PB6    GIO/PCINT6/[X1]/TOSC1   -         I     0     1		input
          // PB5    GIO/PCINT5/[SCK]        -         O     1     0
          // PB4    GIO/PCINT4/[MISO]       -         I     0     0
          // PB3    GIO/PCINT3/[MOSI]/OC2A  -         O     1     0
          // PB2    GIO/PCINT2/[SS]/OC1B    LED_R     O     1     0
          // PB1    [GIO]/PCINT1/OC1A       GDO2      I     0     0
	  	  // PB0    [GIO]/PCINT0/ICP1/CLKO  CSn       O     1     1
         DDRB  = B1010_1101;
		 PORTB = B0100_0001;
        //-----------------------------------------------------------------------
          // PORTC  Function                NAME     I/O  DDRB PORTB
          // -      -                       -         -     0     0
          // PC6    GIO/PCINT14/[RESET]     -         I     0     0
          // PC5    GIO/PCINT13/ADC5/SCL    SCL       -     0     1
          // PC4    GIO/PCINT12/ADC4/SDA    SDA       -     0     1
          // PC3    GIO/PCINT11/ADC3        LED3      O     1     0
          // PC2    GIO/PCINT10/ADC2        LED2  	  O     1     0
          // PC1    [GIO]/PCINT9/ADC1       LED1      O     1     0
	  	  // PC0    [GIO]/PCINT8/ADC0       BATON  Hi-z/O  0/1    0			// change between Hi-z and output
        DDRC  = B0000_1110;
	  	PORTC = B0011_0000;
       	//-----------------------------------------------------------------------
          // PORTD  Function                NAME     I/O  DDRB PORTB
          // PD7    [GIO]/PCINT23/AIN1      MC-       O     1     0
          // PD6    [GIO]/PCINT22/AIN0/OC0A MC+       O     1     0
          // PD5    [GIO]/PCINT21/T1/OC0B   KEY       I     0     0			// pull down with resistance
          // PD4    [GIO]/PCINT20/T0/XCK    THI       O     1     0			// not use , now is for test
          // PD3    GIO/PCINT19/[INT1]/OC2B INT1      I     0     1			// external pull up
          // PD2    GIO/PCINT18/[INT0]      INT0      I     0     1			// external pull up
          // PD1    GIO/PCINT17/TXD         TXD       O     1     1			// Input for Charge, output for UART
	  	  // PD0    GIO/[PCINT16]/RXD       RXD    	  I     0     1			//
        DDRD  = B1101_0010;
	  	PORTD = B0000_1111;
       	//-----------------------------------------------------------------------
		// PORTD  Function               	NAME     I/O  DDRB PORTB
        // ADC7   ADC7                   	BATIN     -     -     -
        // ADC6   ADC6                   	MOTORIN   -     -     -
       	//-----------------------------------------------------------------------
       	// – – – [PUD] – – IVSEL IVCE
          //MCUCR &= ~(1<<PUD);
		
/*pin change interrupt*/

    	//PCINT23 PCINT22 PCINT21 PCINT20 PCINT19 PCINT18 PCINT17 PCINT16 (PCMSK2)	PORTD
    	//   0      0      KEY       0    [TILT] [SWITCH]  CHGST     0
    	PCMSK2 = B0000_0000;

    	//– PCINT14 PCINT13 PCINT12 PCINT11 PCINT10 PCINT9 PCINT8 (PCMSK1)	PORTC
    	//0    0       0     	0    	0       0      0      0
    	PCMSK1 = B0000_0000;			

    	//PCINT7 PCINT6 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 (PCMSK0) PORTB
    	//   0     0      0      0      0     0     GDO2      0
    	PCMSK0 = B0000_0000;

    	//– – – – – PCIE2 PCIE1 PCIE0 (PCICR)  //pin change enable
    	//0  0  0  0  0   1     0     1
    	PCICR = B0000_0000;

    	//–––––PCIF2 PCIF1 PCIF0 (PCIFR)
    	//0 0 0 0 0   0     0     0
    	//PCIFR=B0000_0000;

/*external interrupt*/
    	//B00 Lower level
    	//B01 Any logical change
    	//B10 Falling edge
    	//B11 Rising edge
		
    	//– – – – ISC11 ISC10 ISC01 ISC00 (EICRA)
    	EICRA = B0000_0001;
		
    	//– – – – – – INT1 INT0 (EIMSK)
    	EIMSK = B0000_0001;
		
    	//– – – – – – INTF1 INTF0 (EIFR)
    	//EIFR = B0000_0000;
	
}
//------------------------------------------------------------------------------
void HAL_INIT(void)
{
    _CLI();
    IOPORT_INIT();
}
//------------------------------------------------------------------------------


⌨️ 快捷键说明

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