单片机C语言编程基础
发布时间:2008/8/16 0:00:00 访问次数:857
单片机的外部结构:
1、 dip40双列直插;
2、 p0,p1,p2,p3四个8位准双向i/o引脚;(作为i/o输入时,要先输出高电平)
3、 电源vcc(pin40)和地线gnd(pin20);
4、 高电平复位reset(pin9);(10uf电容接vcc与reset,即可实现上电复位)
5、 内置振荡电路,外部只要接晶体至x1(pin18)和x0(pin19);(频率为主频的12倍)
6、 程序配置ea(pin31)接高电平vcc;(运行单片机内部rom中的程序)
7、 p3支持第二功能:rxd、txd、int0、int1、t0、t1
单片机内部i/o部件:(所为学习单片机,实际上就是编程控制以下i/o部件,完成指定任务)
1、 四个8位通用i/o端口,对应引脚p0、p1、p2和p3;
2、 两个16位定时计数器;(tmod,tcon,tl0,th0,tl1,th1)
3、 一个串行通信接口;(scon,sbuf)
4、 一个中断控制器;(ie,ip)
针对at89c52单片机,头文件at89x52.h给出了sfr特殊功能寄存器所有端口的定义。教科书的160页给出了针对mcs51系列单片机的c语言扩展变量类型。
单片机c语言编程基础
1、 十六进制表示字节0x5a:二进制为01011010b;0x6e为01101110。
2、 如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。
3、 ++var表示对变量var先增一;var—表示对变量后减一。
4、 x |= 0x0f;表示为 x = x | 0x0f;
5、 tmod = ( tmod & 0xf0 ) | 0x05;表示给变量tmod的低四位赋值0x5,而不改变tmod的高四位。
6、 while( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;}
在某引脚输出高电平的编程方法:(比如p1.3(pin4)引脚)
#include //该头文档中有单片机内部资源的符号化定义,其中包含p1.3
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
p1_3 = 1; //给p1_3赋值1,引脚p1.3就能输出高电平vcc
while( 1 ); //死循环,相当 loop: goto loop;
}
注意:p0的每个引脚要输出高电平时,必须外接上拉电阻(如4k7)至vcc电源。
在某引脚输出低电平的编程方法:(比如p2.7引脚)
#include //该头文档中有单片机内部资源的符号化定义,其中包含p2.7
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
p2_7 = 0; //给p2_7赋值0,引脚p2.7就能输出低电平gnd
while( 1 ); //死循环,相当 loop: goto loop;
}
在某引脚输出方波编程方法:(比如p3.1引脚)
#include //该头文档中有单片机内部资源的符号化定义,其中包含p3.1
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
while( 1 ) //非零表示真,如果为真则执行下面循环体的语句
{
p3_1 = 1; //给p3_1赋值1,引脚p3.1就能输出高电平vcc
p3_1 = 0; //给p3_1赋值0,引脚p3.1就能输出低电平gnd
} //由于一直为真,所以不断输出高、低、高、低……,从而形成方波
}
将某引脚的输入电平取反后,从另一个引脚输出:( 比如 p0.4 = not( p1.1) )
#include //该头文档中有单片机内部资源的符号化定义,其中包含p0.4和p1.1
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
p1_1 = 1; //初始化。p1.1作为输入,必须输出高电平
while( 1 ) //非零表示真,如果为真则执行下面循环体的语句
{
if( p1_1 == 1 ) //读取p1.1,就是认为p1.1为输入,如果p1.1输入高电平vcc
{ p0_4 = 0; } //给p0_4赋值0,引脚p0.4就能输出低电平gnd
else //否则p1.1输入为低电平gnd
//{ p0_4 = 0; } //给p0_4赋值0,引脚p0.4就能输出低电平gnd
{ p0_4 = 1; } //给p0_4赋值1,引脚p0.4就能输出高电平vcc
} //由于一直为真,所以不断根据p1.1的输入情况,改变p0.4的输出电平
}
将某端口8个引脚输入电平,低四位取反后,从另一个端口8个引脚输出:( 比如 p2 = not( p3 ) )
#include //该头文档中有单片机内部资源的符号化定义,其中包含p2和p3
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
p3 = 0xff; //初始化。p3作为输入,必须输出高电平,同时给p3口的8个引脚输出高电平
while( 1 ) //非零表示真,如果为真则执行下面循环体的语句
{ //取反的方法是异或1,而不取反的方法则是异或0
单片机的外部结构:
1、 dip40双列直插;
2、 p0,p1,p2,p3四个8位准双向i/o引脚;(作为i/o输入时,要先输出高电平)
3、 电源vcc(pin40)和地线gnd(pin20);
4、 高电平复位reset(pin9);(10uf电容接vcc与reset,即可实现上电复位)
5、 内置振荡电路,外部只要接晶体至x1(pin18)和x0(pin19);(频率为主频的12倍)
6、 程序配置ea(pin31)接高电平vcc;(运行单片机内部rom中的程序)
7、 p3支持第二功能:rxd、txd、int0、int1、t0、t1
单片机内部i/o部件:(所为学习单片机,实际上就是编程控制以下i/o部件,完成指定任务)
1、 四个8位通用i/o端口,对应引脚p0、p1、p2和p3;
2、 两个16位定时计数器;(tmod,tcon,tl0,th0,tl1,th1)
3、 一个串行通信接口;(scon,sbuf)
4、 一个中断控制器;(ie,ip)
针对at89c52单片机,头文件at89x52.h给出了sfr特殊功能寄存器所有端口的定义。教科书的160页给出了针对mcs51系列单片机的c语言扩展变量类型。
单片机c语言编程基础
1、 十六进制表示字节0x5a:二进制为01011010b;0x6e为01101110。
2、 如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。
3、 ++var表示对变量var先增一;var—表示对变量后减一。
4、 x |= 0x0f;表示为 x = x | 0x0f;
5、 tmod = ( tmod & 0xf0 ) | 0x05;表示给变量tmod的低四位赋值0x5,而不改变tmod的高四位。
6、 while( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;}
在某引脚输出高电平的编程方法:(比如p1.3(pin4)引脚)
#include //该头文档中有单片机内部资源的符号化定义,其中包含p1.3
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
p1_3 = 1; //给p1_3赋值1,引脚p1.3就能输出高电平vcc
while( 1 ); //死循环,相当 loop: goto loop;
}
注意:p0的每个引脚要输出高电平时,必须外接上拉电阻(如4k7)至vcc电源。
在某引脚输出低电平的编程方法:(比如p2.7引脚)
#include //该头文档中有单片机内部资源的符号化定义,其中包含p2.7
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
p2_7 = 0; //给p2_7赋值0,引脚p2.7就能输出低电平gnd
while( 1 ); //死循环,相当 loop: goto loop;
}
在某引脚输出方波编程方法:(比如p3.1引脚)
#include //该头文档中有单片机内部资源的符号化定义,其中包含p3.1
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
while( 1 ) //非零表示真,如果为真则执行下面循环体的语句
{
p3_1 = 1; //给p3_1赋值1,引脚p3.1就能输出高电平vcc
p3_1 = 0; //给p3_1赋值0,引脚p3.1就能输出低电平gnd
} //由于一直为真,所以不断输出高、低、高、低……,从而形成方波
}
将某引脚的输入电平取反后,从另一个引脚输出:( 比如 p0.4 = not( p1.1) )
#include //该头文档中有单片机内部资源的符号化定义,其中包含p0.4和p1.1
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
p1_1 = 1; //初始化。p1.1作为输入,必须输出高电平
while( 1 ) //非零表示真,如果为真则执行下面循环体的语句
{
if( p1_1 == 1 ) //读取p1.1,就是认为p1.1为输入,如果p1.1输入高电平vcc
{ p0_4 = 0; } //给p0_4赋值0,引脚p0.4就能输出低电平gnd
else //否则p1.1输入为低电平gnd
//{ p0_4 = 0; } //给p0_4赋值0,引脚p0.4就能输出低电平gnd
{ p0_4 = 1; } //给p0_4赋值1,引脚p0.4就能输出高电平vcc
} //由于一直为真,所以不断根据p1.1的输入情况,改变p0.4的输出电平
}
将某端口8个引脚输入电平,低四位取反后,从另一个端口8个引脚输出:( 比如 p2 = not( p3 ) )
#include //该头文档中有单片机内部资源的符号化定义,其中包含p2和p3
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
{
p3 = 0xff; //初始化。p3作为输入,必须输出高电平,同时给p3口的8个引脚输出高电平
while( 1 ) //非零表示真,如果为真则执行下面循环体的语句
{ //取反的方法是异或1,而不取反的方法则是异或0
上一篇:基于页的8051多任务模型
深圳服务热线:13692101218 13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)

深圳市碧威特网络技术有限公司
付款方式