STC单片机C语言通用万能编程模板.docx

上传人:b****1 文档编号:12488954 上传时间:2023-04-19 格式:DOCX 页数:9 大小:15.70KB
下载 相关 举报
STC单片机C语言通用万能编程模板.docx_第1页
第1页 / 共9页
STC单片机C语言通用万能编程模板.docx_第2页
第2页 / 共9页
STC单片机C语言通用万能编程模板.docx_第3页
第3页 / 共9页
STC单片机C语言通用万能编程模板.docx_第4页
第4页 / 共9页
STC单片机C语言通用万能编程模板.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

STC单片机C语言通用万能编程模板.docx

《STC单片机C语言通用万能编程模板.docx》由会员分享,可在线阅读,更多相关《STC单片机C语言通用万能编程模板.docx(9页珍藏版)》请在冰豆网上搜索。

STC单片机C语言通用万能编程模板.docx

STC单片机C语言通用万能编程模板

《8051单片机C语言编程模板》

 

1.函数头文件

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

程序名:

  

编写人:

  

编写时间:

  20年月日

硬件支持:

  

接口说明:

  

修改日志:

  

  

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

说明:

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

#include<>

秒级CPU延时函数

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

函数名:

毫秒级CPU延时函数

调用:

DELAY_MS();

参数:

1~65535(参数不可为0)

返回值:

结果:

占用CPU方式延时与参数数值相同的毫秒时间

备注:

应用于1T单片机时i<600,应用于12T单片机时i<125(在此预为1T单片机数值)

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

voidDELAY_MS(unsignedinta)

{

unsignedinti;

while(--a!

=0)

{

for(i=0;i<600;i++);

}

}

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

-----------------------------------------------------------------------------

M1M0方式说明

00013位T/C,由TL低5位和TH的8位组成13位计数器

01116位T/C,TL和TH共16位计数器

1028位T/C,TL用于计数,当TL溢出时将TH中的值自动写入TL

113两组8位T/C

-----------------------------------------------------------------------------

3.定时/计数器初始化函数

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

函数名:

定时/计数器初始化函数

调用:

T_C_init();

参数:

返回值:

结果:

设置SFR中T/C1和(或)T/C0相关参数

备注:

本函数控制T/C1和T/C0,不需要使用的部分可用时/计数器1中断处理函数

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

函数名:

定时/计数器1中断处理函数

调用:

[T/C1溢出后中断处理]

参数:

返回值:

结果:

重新写入16位计数寄存器初始值,处理用户程序

备注:

必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致

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

voidT_C1(void)interrupt3using3时/计数器0中断处理函数

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

函数名:

定时/计数器0中断处理函数

调用:

[T/C0溢出后中断处理]

参数:

返回值:

结果:

重新写入16位计数寄存器初始值,处理用户程序

备注:

必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致

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

voidT_C0(void)interrupt1using1部中断INT初始化函数

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

函数名:

外部中断INT初始化函数

调用:

INT_init();

参数:

返回值:

结果:

启动外部中断INT1、INT0中断,设置中断方式

备注:

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

voidINT_init(void)

{

EA=1;部中断INT1中断处理程序

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

函数名:

外部中断INT1中断处理程序

调用:

[外部引脚INT1中断处理]

参数:

返回值:

结果:

用户处理外部中断信号

备注:

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

voidINT_1(void)interrupt2using2部中断INT0中断处理程序

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

函数名:

外部中断INT0中断处理程序

调用:

[外部引脚INT0中断处理]

参数:

返回值:

结果:

用户处理外部中断信号

备注:

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

voidINT_0(void)interrupt0using2通I/O口模拟PWM生成程序

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

函数名:

普通I/O口模拟PWM生成程序

调用:

display()

备注:

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

voiddisplay(unsignedinta)函数

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

函数名:

主函数

调用:

参数:

返回值:

结果:

程序开始处,无限循环

备注:

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

voidmain(void)

{

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

函数名:

扬声器驱动

备注:

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

unsignedcharMUSIC;

unsignedcharSTH0;

unsignedcharSTL0;

unsignedintcodetab[]={

64021,64103,64260,64400,8个独立式键盘驱动程序

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

函数名:

8个独立式键盘驱动程序

调用:

=Key();

参数:

返回值:

unsignedchar键值0~8

结果:

有键按下时返回值为键值1~8,无键按下时返回值为0

备注:

在主函数中不断调用

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

unsignedcharKey()16个阵列式键盘驱动程序

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

函数名:

16个阵列式键盘驱动程序

调用:

=Key();

参数:

返回值:

unsignedchar键值0~16

结果:

有键按下时返回值为键值1~16,无键按下时返回值为0

备注:

在主函数中不断调用

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

unsignedcharKey(void)//4*4阵列键盘处理程序

{

unsignedchara,b,c;

KEY=0x0f;//设定键盘初始电平状态

if(KEY!

=0x0f)//读取键盘状态是否改变

{

Delay(20);//延时20ms去抖动

if(KEY!

=0x0f)//重新读取

{

a=KEY;//寄存状态值到a

}

KEY=0xf0;//设定键盘反向电平状态

c=KEY;//读取反向电平状态值到c

a=a|c;//a与c相或

switch(a)//键盘状态查表

{

case0xee:

b=1;break;

case0xed:

b=2;break;

case0xeb:

b=3;break;

case0xe7:

b=4;break;

case0xde:

b=5;break;

case0xdd:

b=6;break;

case0xdb:

b=7;break;

case0xd7:

b=8;break;

case0xbe:

b=9;break;

case0xbd:

b=10;break;

case0xbb:

b=11;break;

case0xb7:

b=12;break;

case0x7e:

b=13;break;

case0x7d:

b=14;break;

case0x7b:

b=15;break;

case0x77:

b=16;break;

default:

b=0;break;

}

}

return(b);//将b中的键值代号送入函数返回值

}

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

T_C_init();

UART_init();

INT_init();

LCM2402_Init();

//P1M0=0xff;//将P1接口设置为高阻态输入(去掉“//”解除屏蔽)

//P1M1=0x00;//触摸按键启用

//DELAY_MS(200);//延时等待I/O接口电平状态稳定

PWM_init();//PWM初始化

//初始程序

while

(1)

{

//无限循环程序

}

}

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1