C8051单片机简述

在电子与计算机世界中,信息的表示与处理是一个永恒的话题,C8051微控制器芯片就是一个信息处理器,输入信号从他的引脚输入,经过他的内部电路处理后,再从芯片的引脚输出,他的整体就是完成这样一个功能而已。

他和微处理器芯片类似,比如intel芯片,不过他的功能简单的多,但本质是一样的,都是 数据的输入---数据的处理---数据的输出。他们都是以机器指令执行程序,C语言经过汇编后都是转化为机器指令。同处理器相比,他的程序调试要简单很多,我们用KeilC很容易看到C语句对应的汇编与机器指令,还可以看到内部寄存器R1-R8PSW状态寄存器,PC的值内容,很容易看到PC指向的就是下一条指令的地址。

他的内部还是有些复杂的,有模数转换,USB控制器,内部时钟,内部存储器,SPI总线,Uart串口等等。但万变不离其一,只要把握了本质脉络就很容易掌握它的内容。

一个最基本的单片机电路有电源电路,时钟电路,复位电路。没有电源提供能量,单片机当然无法运行;没有时钟,指令无法按照一定的时序运行;没有复位电路,单片机出错后(外部干扰,指令跑飞)无法恢复。

//内部时钟-24.5MC8051F330

void Oscillator_Init()

{

    OSCICN    = 0x83;

}

//检测到时钟丢失允许复位

void Reset_Sources_Init()

{

RSTSRC    = 0x04;

}

当然编写程序还需要初始化IO口,设置为输入方式或输出方式,推挽输出或开漏输出等。

void Port_IO_Init()

{

    // P0.0  -  Unassigned,  Push-Pull,  Digital

    // P0.1  -  Unassigned,  Push-Pull,  Digital

    // P0.2  -  Unassigned,  Push-Pull,  Digital

    // P0.3  -  Unassigned,  Push-Pull,  Digital

    // P0.4  -  TX0 (UART0), Push-Pull,  Digital

    // P0.5  -  RX0 (UART0), Push-Pull,  Digital

    // P0.6  -  Unassigned,  Push-Pull,  Digital

    // P0.7  -  Unassigned,  Push-Pull,  Digital

    // P1.0  -  Unassigned,  Open-Drain, Digital

    // P1.1  -  Unassigned,  Open-Drain, Digital

    // P1.2  -  Unassigned,  Open-Drain, Digital

    // P1.3  -  Unassigned,  Open-Drain, Digital

    // P1.4  -  Unassigned,  Open-Drain, Digital

    // P1.5  -  Unassigned,  Open-Drain, Digital

    // P1.6  -  Unassigned,  Open-Drain, Digital

    // P1.7  -  Unassigned,  Open-Drain, Digital

    P0MDOUT   = 0xFF;

    XBR0      = 0x01;

    XBR1      = 0x40;

}

编完了初始化程序就是main主函数了,主函数中先进行初始化,然后死循环执行相应程序。

void Init_Device(void)

{

    Reset_Sources_Init();

    Port_IO_Init();

    Oscillator_Init();

}

Void Delay(unsigned int time)

{

While(--time);

}

Void main()

{

Init_Device();

While(1){

P1^2 = 1;

Delay(60000);

P1^2 = 0;

Delay(60000);

}

}

单片机型号非常多(51PICArm),但是本质都差不多,都是进行时钟,IO口,复位等初始化,然后进行主程序的运行,可能有中断,串口,Flash读写,SPIIIC通讯等内容。


你可能感兴趣的:(单片机)