单片机C语言编程模板
单片机实验C语言编程

流水灯效果:发关二级管依次独个被点亮,一直循环下去。
C语言程序如下:#include <regX52.H>unsigned char i;unsigned char temp;void delay(void) //延时子程序{unsigned char m,n,s;for(m=20;m>0;m--)for(n=20;n>0;n--)for(s=248;s>0;s--);}void main(void) //主程序{while(1) //循环条件永远为真,以下程序一直执行下去。
{temp=0xfe;P3=temp; //直接对I/O 口P3 赋值,使.P3.0 输出低点平。
delay(); //延时for(i=1;i<8;i++) //实现灯的移动{temp=(temp<<1)|0x01; //P3 口I/O 轮流低电平P3=temp;delay(); //延时,肉眼可以看到}}}闪烁灯效果:发光二极管维持一闪一闪的状态。
C语言程序如下:#include <regx51.H>/******************************************************************** **********第一行是一个"文件包含"处理。
所谓"文件包含"是指一个文件将另外一个文件的内容全部包含进来,所以这里的程序虽然只有4 行,但C 编译器在处理的时候却要处理几十或几百行。
这里程序中包含REG51.h文件的目的是为了要使用P1 这符号即通知C 编译器,程序中所写的P1 是指80C51 单片机的P1 端口而不是其它变量。
********************************************************************* *********/void delay02s(void) //延时0.2 秒子程序{unsigned char i,j,k; //定义3 个无符号字符型数据。
单片机c语言程序设计

单片机c语言程序设计单片机(Microcontroller)是集成了微处理器核心、存储器和外围设备接口等功能单元的集成电路芯片,用于嵌入式系统中的控制任务。
C语言是一种广泛使用的高级编程语言,非常适合用于单片机的程序设计。
下面是一个简单的单片机C语言程序设计示例,演示了如何使用C语言编写单片机程序:#include <reg51.h> // 引入单片机特定的头文件// 定义延时函数void delay(int milliseconds) {int i, j;for(i = 0; i < milliseconds; i++) {for(j = 0; j < 120; j++) {}}}// 主函数void main() {while(1) {P1 = 0xFF; // 将P1口的所有引脚设置为高电平delay(1000); // 延时1秒P1 = 0x00; // 将P1口的所有引脚设置为低电平delay(1000); // 延时1秒}}在这个示例中,我们使用了C语言来编写一个简单的程序,控制单片机的引脚P1。
程序的逻辑如下:1.引入reg51.h头文件,该头文件是用于8051系列单片机的特定头文件。
2.定义了一个延时函数delay,用于控制程序中的延迟。
3.在主函数main中,我们使用一个无限循环while(1) 来不断执行下面的代码块。
4.将P1口的所有引脚设置为高电平 P1 = 0xFF;然后使用delay函数延时1秒。
5.将P1口的所有引脚设置为低电平P1 = 0x00;然后再次使用delay函数延时1秒。
通过上述逻辑,这个程序会不断地交替将P1引脚设置为高电平和低电平,每次延时1秒,实现了一个简单的LED闪烁的功能。
具体的单片机和开发环境可能有所不同,程序中的头文件和寄存器定义可能会有所差异。
在实际的单片机C语言程序设计中,需要根据所使用的单片机型号和开发环境来进行对应的载入头文件和编写代码。
单片机常用c代码

单片机常用c代码在单片机领域,C语言是最常用的编程语言之一。
它具有简单易学、灵活高效的特点,被广泛应用于单片机系统的开发中。
本文将介绍一些常用的单片机C代码,为读者提供参考和学习的资源。
一、IO口控制单片机的IO口是与外部设备连接的重要接口,通过控制IO口的高低电平来实现与外部设备的通信。
以下是常见的IO口控制代码示例:1. 设置IO口为输出模式:```c#define LED_PIN 0 // 指定IO口引脚号void setup() {pinMode(LED_PIN, OUTPUT); // 设置IO口为输出模式}void loop() {digitalWrite(LED_PIN, HIGH); // 设置IO口为高电平delay(1000); // 延迟1秒digitalWrite(LED_PIN, LOW); // 设置IO口为低电平delay(1000); // 延迟1秒```2. 设置IO口为输入模式:```c#define BUTTON_PIN 1 // 指定IO口引脚号void setup() {pinMode(BUTTON_PIN, INPUT); // 设置IO口为输入模式}void loop() {if (digitalRead(BUTTON_PIN) == HIGH) { // 判断IO口电平是否为高电平// 执行相应操作}}```二、定时器控制定时器是单片机中的重要组件,可用于实现精确的时间控制和周期性任务。
以下是常见的定时器控制代码示例:1. 设置定时器计数器和预分频值:void setup() {TCCR1B = (1 << CS12) | (1 << CS10); // 设置定时器1的预分频为1024}void loop() {// 执行相应操作}```2. 设置定时器中断服务程序:```cISR(TIMER1_COMPA_vect) {// 定时器1比较匹配中断服务程序}void setup() {TCCR1B = (1 << WGM12) | (1 << CS12) | (1 << CS10); // 设置定时器1的CTC模式和预分频为1024OCR1A = 15624; // 设置定时器1的比较匹配值,实现1秒中断一次TIMSK1 = (1 << OCIE1A); // 允许定时器1比较匹配中断}void loop() {// 执行相应操作}```三、串口通信串口通信是单片机与计算机或其他外部设备进行数据交互的常用方式。
单片机C语言实例编程(附带最终的效果图片)

一、LED魔术摇棒1.设计任务设计一个LED魔术摇棒。
2.设计要求(1)系统供电:2节AA电池;(2)CPU:采用MCS-51系列单片机89C2051;(3)显示组成:8个LED发光二极管;(4)显示效果:清晰、稳定、不失真、美观;(5)显示内容:显示姓名拼音缩写和学号的末2位数字;(6)其他。
3.工作原理LED魔术摇棒是在手摆动到不同位置的时候,让位于一条直线上的LED显示二维图像的不同的列,利用人眼的视觉暂留效应,实现图形扫描显示。
具体地说,如果已知摇棒从一侧摆动到另一侧的时间,那么把这个时间分成N份,然后在每一份的时间里显示图形的相应一列,则可以得到完整的图形显示。
4. 注意问题(1)位置传感器:透射式光电传感器、水银开关;(2)传感器输出信号的消抖动;(3)传感器输出信号跳变与实际位置的关系;(4)时间等分数N的选择;(5)摆动双程显示还是单程显示的选择;(6)正向时间、反向时间、周期时间检测;(7)周期过长的处理;(8)图形数i、每幅图形显示次数j、图形的列数k的考虑5. 工具与资料(1)芯片资料:89C2051,/;(2)编程器:广州TOP,TOP853,。
6. 考核内容(1)系统硬件电路原理图,包括各集成元件型号和分立元件参数;(2)程序源文件;(3)实物及运行情况检测;二、数字钟的设计三、交通控制灯的设计如何能智能调整红绿灯的时间?四、多路抢答器的设计五、LED点阵广告牌的设计六、篮球记分器的设计七、电子音乐盒的设计说明:标题为红色的表示设计难度相对较高!。
51单片机C语言编程100例

目录实例3:用单片机控制第一个灯亮 ............................................ 错误!未定义书签。
实例4:用单片机控制一个灯闪烁:认识单片机的工作频率错误!未定义书签。
实例5:将P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能错误!未定义书签。
实例6:使用P3口流水点亮8位LED ....................................... 错误!未定义书签。
实例7:通过对P3口地址的操作流水点亮8位LED ............... 错误!未定义书签。
实例8:用不同数据类型控制灯闪烁时间 ................................ 错误!未定义书签。
实例9:用P0口、P1 口分别显示加法和减法运算结果 ........ 错误!未定义书签。
实例10:用P0、P1口显示乘法运算结果 ................................ 错误!未定义书签。
实例11:用P1、P0口显示除法运算结果 ................................ 错误!未定义书签。
实例12:用自增运算控制P0口8位LED流水花样 ................ 错误!未定义书签。
实例13:用P0口显示逻辑"与"运算结果 ................................. 错误!未定义书签。
实例14:用P0口显示条件运算结果 ........................................ 错误!未定义书签。
实例15:用P0口显示按位"异或"运算结果 ............................. 错误!未定义书签。
实例16:用P0显示左移运算结果 ............................................ 错误!未定义书签。
单片机C语言简单编程

1、点亮2、3、5、8四个发光二极管。
(课后作业)#include<reg52.h>sbit LED2=P1^0;sbit LED3=P1^3;sbit LED5=P1^5;sbit LED8=P1^6;main(){LED2=0; //第二盏灯亮LED3=0; //第三盏灯亮LED5=0; //第五盏灯亮LED8=0; //第八盏灯亮while(1);}2、设计走马灯和数码管逐一显示数字。
(课后作业)#include<reg52.h>void Delay(){unsigned int j;j=30000;while(j--);} //时间延时函数void main(){int a[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管显示段码int b[10]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xaa,0x55}; //点亮灯的段码unsigned char i;while(1){for(i=0;i<10;i++){P1=b[i];P2=a[i];Delay();}}}3、开关K1控制加,开关K2控制减,开关K3控制复位。
当减到小于0的时候再从99开始减,当加到99的时候又从0开始加。
(课后作业)#include<reg52.h>sbit BIT1=P3^0;sbit BIT2=P3^1;sbit Button1=P3^7;sbit Button2=P3^6;sbit Button3=P3^5;{unsigned int i,j;for(i=0;i<t;i++)for(j=0;j<252;j++){;}} //时间延迟函数的定义void main(){char dat = 0; // 有符号数int b[10]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xaa,0x55}; //跑马灯显示的段码unsigned char z;while(1){for(z=0;z<10;z++){BIT1=0;BIT2=1;P2=a[dat/10];Delay(20);P2 = 0xff ; // 消隐,防止个位的数在十位显示,导致显示乱码BIT1=1;BIT2=0;P2=a[dat%10];Delay(20);P2 = 0xff ; // 消隐P1=b[z];Delay(20); //跑马灯显示if(Button1==0){dat++;if(dat >= 99)dat=0;while(Button1==0);} //按键1是控制加的,当加到大于等于99时又从0开始加if(Button2==0){dat--;if(dat <= 0)dat=99;while(Button2==0);} //按键2是控制减的,当减到小于等于0时再从99开始减if(Button3==0){dat=0;while(Button3==0);}} //按键3是控制复位的,任何时候按下就归04、开始1、2、3、4闪烁,按一下K1,5、6、7、8闪烁,再按一下K1全部闪烁。
单片机60秒计时器程序c语言
一、概述计时器在日常生活和工业生产中扮演着重要的角色。
60秒计时器是一种常见的计时器类型,用于测量较短的时间间隔。
单片机作为一种微处理器,具有广泛的应用领域,其使用C语言编程可以实现各种功能,包括计时器。
本文将介绍如何使用C语言编写单片机60秒计时器程序。
二、程序框架1. 宏定义和全局变量声明在编写单片机60秒计时器程序时,首先需要定义一些宏和全局变量,用于设置计时器的工作模式和进行时间计数。
例如:```c#define FOSC xxx#define T1MS (xxx-FOSC/12/1000) 每隔1ms中断一次```全局变量声明如下:```cunsigned char g_seconds;unsigned char g_minutes;unsigned char g_flag;```2. 定时器初始化计时器的初始化是整个程序的重要步骤,需要配置计时器的工作模式、中断使能等。
在C语言中,可以通过编写相应的代码实现。
```cvoid Timer1Init() {TMOD |= 0x10; //设置计数器的工作方式为方式1TH1 = T1MS / 256; //装初值TL1 = T1MS 256;ET1 = 1; //打开定时器1中断允许TR1 = 1; //打开定时器EA = 1; //打开总中断}```3. 计时器中断处理函数计时器中断发生时,需要进行相应的处理,例如对秒数进行累加,判断是否达到60秒等。
```cvoid Timer1_ISR() interrupt 3 using 1 {TH1 = T1MS / 256;TL1 = T1MS 256;g_seconds++;if (g_seconds >= 60) {g_minutes++;g_seconds = 0;}if (g_minutes >= 60) {g_minutes = 0;}g_flag = 1;}```4. 主函数在主函数中,可以设置好计时器的初始状态,并通过不断循环等待计时器中断的触发,实现60秒计时功能。
51单片机C语言编程100例
51单片机C语言编程100例1. 前言在学习嵌入式系统开发中,单片机是必不可少的一个组成部分。
而在单片机的编程语言中,C语言因其易学易用、灵活性高等特点而备受青睐。
本文将介绍51单片机C语言编程的100个实例,旨在帮助读者更加深入地理解和掌握这一领域的知识。
2. 闪烁LED灯实例1:使用51单片机编程控制一个LED灯的闪烁,实现简单的开关控制。
3. 延时程序实例2:编写一个延时程序,用于控制LED灯的延时亮灭,实现不同频率的闪烁效果。
4. 数码管显示实例3:通过编写程序,使用数码管显示数字0-9,实现简单的计数功能。
5. 矩阵键盘输入实例4:通过编程实现对矩阵键盘的输入检测和处理,实现对不同按键的响应。
6. PWM输出实例5:使用51单片机的PWM输出功能,控制LED灯的亮度调节。
7. 温度传感器读取实例6:通过温度传感器读取模块,实现温度的检测和显示。
8. 模拟信号采集实例7:通过编程实现对模拟信号的采集和处理,实现对外部信号的监测和控制。
9. 串口通信实例8:使用51单片机的串口通信功能,实现单片机与计算机之间的数据传输。
10. 蜂鸣器控制实例9:通过编程控制蜂鸣器的开关,实现不同频率的声音发声。
11. 数字口输入检测实例10:通过编程实现对数字口输入状态的检测和处理,实现对外部信号的监测和控制。
12. 定时器中断实例11:使用51单片机的定时器中断功能,实现定时任务的执行和控制。
13. PWM输出调制实例12:使用数字口和定时器实现PWM波形的调制和输出控制。
14. 蓝牙通信实例13:通过蓝牙模块实现51单片机与手机之间的数据通信,实现简单的远程控制。
15. 温湿度传感器读取实例14:通过温湿度传感器读取模块,实现温湿度的检测和显示。
16. 步进电机控制实例15:通过编程控制步进电机的转动和方向,实现简单的运动控制。
17. 超声波测距实例16:通过超声波测距模块,实现对距离的检测和显示。
18. 电机驱动控制实例17:通过编程和电机驱动模块,实现电机的转动和速度控制。
51单片机C语言编程100例-单片机c语言编程
51单片机C语言编程100例-单片机c语言编程(共19页)-本页仅作为预览文档封面,使用时请删除本页-目录实例3:用单片机控制第一个灯亮...................... 错误!未定义书签。
实例4:用单片机控制一个灯闪烁:认识单片机的工作频率错误!未定义书签。
实例5:将 P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能错误!未定义书签。
实例6:使用P3口流水点亮8位LED.................... 错误!未定义书签。
实例7:通过对P3口地址的操作流水点亮8位LED........ 错误!未定义书签。
实例8:用不同数据类型控制灯闪烁时间................ 错误!未定义书签。
实例9:用P0口、P1 口分别显示加法和减法运算结果.... 错误!未定义书签。
实例10:用P0、P1口显示乘法运算结果................ 错误!未定义书签。
实例11:用P1、P0口显示除法运算结果................ 错误!未定义书签。
实例12:用自增运算控制P0口8位LED流水花样........ 错误!未定义书签。
实例13:用P0口显示逻辑"与"运算结果................ 错误!未定义书签。
实例14:用P0口显示条件运算结果.................... 错误!未定义书签。
实例15:用P0口显示按位"异或"运算结果.............. 错误!未定义书签。
实例16:用P0显示左移运算结果...................... 错误!未定义书签。
实例17:"万能逻辑电路"实验......................... 错误!未定义书签。
实例18:用右移运算流水点亮P1口8位LED............. 错误!未定义书签。
实例19:用if语句控制P0口8位LED的流水方向....... 错误!未定义书签。
51单片机C语言编程100例
目录实例3:用单片机控制第一个灯亮 (5)实例4:用单片机控制一个灯闪烁:认识单片机的工作频率 (6)实例5:将P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能 (7)实例6:使用P3口流水点亮8位LED (8)实例7:通过对P3口地址的操作流水点亮8位LED (10)实例8:用不同数据类型控制灯闪烁时间 (12)实例9:用P0口、P1 口分别显示加法和减法运算结果 (14)实例10:用P0、P1口显示乘法运算结果 (15)实例11:用P1、P0口显示除法运算结果 (16)实例12:用自增运算控制P0口8位LED流水花样 (16)实例13:用P0口显示逻辑"与"运算结果 (18)实例14:用P0口显示条件运算结果 (18)实例15:用P0口显示按位"异或"运算结果 (19)实例16:用P0显示左移运算结果 (19)实例17:"万能逻辑电路"实验 (20)实例18:用右移运算流水点亮P1口8位LED (20)实例19:用if语句控制P0口8位LED的流水方向 (22)实例20:用swtich语句的控制P0口8位LED的点亮状态 (23)实例21:用for语句控制蜂鸣器鸣笛次数 (25)实例22:用while语句控制LED (27)实例23:用do-while语句控制P0口8位LED流水点亮 (29)实例24:用字符型数组控制P0口8位LED流水点亮 (31)实例25:用P0口显示字符串常量 (32)实例26:用P0 口显示指针运算结果 (34)实例27:用指针数组控制P0口8位LED流水点亮 (35)实例28:用数组的指针控制P0 口8 位LED流水点亮 (36)实例29:用P0 、P1口显示整型函数返回值 (38)实例30:用有参函数控制P0口8位LED流水速度 (39)实例31:用数组作函数参数控制流水花样 (41)实例32:用指针作函数参数控制P0口8位LED流水点亮 (42)实例33:用函数型指针控制P1口灯花样 (45)实例34:用指针数组作为函数的参数显示多个字符串 (47)实例35:字符函数ctype.h应用举例 (49)实例36:内部函数intrins.h应用举例 (50)实例37:标准函数stdlib.h应用举例 (51)实例38:字符串函数string.h应用举例 (52)实例39:宏定义应用举例2 (53)实例40:宏定义应用举例2 (54)实例41:宏定义应用举例3 (55)实例42:用定时器T0查询方式P2口8位控制LED闪烁 (56)实例43:用定时器T1查询方式控制单片机发出1KHz音频 (57)实例44:将计数器T0计数的结果送P1口8位LED显示 (58)实例45:用定时器T0的中断控制1位LED闪烁 (59)实例46:用定时器T0的中断实现长时间定时 (61)实例47:用定时器T1中断控制两个LED以不同周期闪烁 (63)实例48:用计数器T1的中断控制蜂鸣器发出1KHz音频 (65)实例49:用定时器T0的中断实现"渴望"主题曲的播放 (66)实例50-1:输出50个矩形脉冲 (72)实例50-2:计数器T0统计外部脉冲数 (73)实例51-2:定时器T0的模式2测量正脉冲宽度 (74)实例52:用定时器T0控制输出高低宽度不同的矩形波 (75)实例53:用外中断0的中断方式进行数据采集 (77)实例54-1:输出负脉宽为200微秒的方波 (78)实例54-2:测量负脉冲宽度 (80)实例55:方式0控制流水灯循环点亮 (81)实例56-1:数据发送程序 (84)实例56-2:数据接收程序 (86)实例57-1:数据发送程序 (87)实例57-2:数据接收程序 (90)实例58:单片机向PC发送数据 (92)实例59:单片机接收PC发出的数据 (94)实例60:用LED数码显示数字5 (96)实例61:用LED数码显示器循环显示数字0~9 (96)实例62:用数码管慢速动态扫描显示数字"1234" (98)实例63:用LED数码显示器伪静态显示数字1234 (99)实例64:用数码管显示动态检测结果 (100)实例65:数码秒表设计 (104)实例66:数码时钟设计 (108)实例67:用LED数码管显示计数器T0的计数值 (114)实例68:静态显示数字“59” (117)实例69:无软件消抖的独立式键盘输入实验 (118)实例70:软件消抖的独立式键盘输入实验 (118)实例71:CPU控制的独立式键盘扫描实验 (120)实例72:定时器中断控制的独立式键盘扫描实验 (126)实例73:独立式键盘控制的4级变速流水灯 (133)实例74:独立式键盘的按键功能扩展:"以一当四" (137)实例75:独立式键盘调时的数码时钟实验 (140)实例76:独立式键盘控制步进电机实验 (148)实例77:矩阵式键盘按键值的数码管显示实验 (153)实例78:矩阵式键盘按键音 (159)实例79:简易电子琴 (162)实例80:矩阵式键盘实现的电子密码锁 (174)实例81:用LCD显示字符'A' (180)实例82:用LCD循环右移显示"Welcome to China" (187)实例83:用LCD显示适时检测结果 (194)实例84:液晶时钟设计 (201)实例85:将数据"0x0f"写入AT24C02再读出送P1口显示 (212)实例86:将按键次数写入AT24C02,再读出并用1602LCD显示 (221)实例87:对I2C总线上挂接多个AT24C02的读写操作 (235)实例88:基于AT24C02的多机通信读取程序 (246)实例88:基于AT24C02的多机通信写入程序 (254)实例90:DS18B20温度检测及其液晶显示 (276)实例91:将数据"0xaa"写入X5045再读出送P1口显示 (293)实例92:将流水灯控制码写入X5045并读出送P1口显示 (300)实例93:对SPI总线上挂接多个X5045的读写操作 (307)实例94:基于ADC0832的数字电压表 (316)实例95:用DAC0832产生锯齿波电压 (327)实例96:用P1口显示红外遥控器的按键值 (328)实例97:用红外遥控器控制继电器 (333)实例98:基于DS1302的日历时钟 (339)实例99:单片机数据发送程序 (356)实例100:电机转速表设计 (358)模拟霍尔脉冲 (368)/*函数的使用和熟悉*///实例3:用单片机控制第一个灯亮#include<reg51.h> //包含51单片机寄存器定义的头文件void main(void){while(1) //无限循环P1=0xfe; //P1=1111 1110B,即P1.0输出低电平}//实例4:用单片机控制一个灯闪烁:认识单片机的工作频率#include<reg51.h> //包含单片机寄存器的头文件/****************************************函数功能:延时一段时间*****************************************/void delay(void) //两个void意思分别为无需返回值,没有参数传递{unsigned int i; //定义无符号整数,最大取值范围65535for(i=0;i<20000;i++) //做20000次空循环; //什么也不做,等待一个机器周期}/*******************************************************函数功能:主函数(C语言规定必须有也只能有1个主函数)********************************************************/void main(void){while(1) //无限循环{P1=0xfe; //P1=1111 1110B,P1.0输出低电平delay(); //延时一段时间P1=0xff; //P1=1111 1111B,P1.0输出高电平delay(); //延时一段时间}}//实例5:将P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能#include<reg51.h> //包含单片机寄存器的头文件/*******************************************************函数功能:主函数(C语言规定必须有也只能有1个主函数)********************************************************/void main(void){while(1) //无限循环{P1=0xff; // P1=1111 1111, 熄灭LEDP0=P1; // 将P1口状态送入P0口P2=P1; // 将P1口状态送入P2口P3=P1; // 将P1口状态送入P3口}}//实例6:使用P3口流水点亮8位LED #include<reg51.h> //包含单片机寄存器的头文件/****************************************函数功能:延时一段时间*****************************************/void delay(void){unsigned char i,j;for(i=0;i<250;i++)for(j=0;j<250;j++);}/*******************************************************函数功能:主函数********************************************************/void main(void)while(1){P3=0xfe; //第一个灯亮delay(); //调用延时函数P3=0xfd; //第二个灯亮delay(); //调用延时函数P3=0xfb; //第三个灯亮delay(); //调用延时函数P3=0xf7; //第四个灯亮delay(); //调用延时函数P3=0xef; //第五个灯亮delay(); //调用延时函数P3=0xdf; //第六个灯亮delay(); //调用延时函数P3=0xbf; //第七个灯亮delay(); //调用延时函数P3=0x7f; //第八个灯亮delay(); //调用延时函数}}//实例7:通过对P3口地址的操作流水点亮8位LED#include<reg51.h> //包含单片机寄存器的头文件sfr x=0xb0; //P3口在存储器中的地址是b0H,通过sfr可定义8051内核单片机//的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的操作/****************************************函数功能:延时一段时间*****************************************/void delay(void){unsigned char i,j;for(i=0;i<250;i++)for(j=0;j<250;j++); //利用循环等待若干机器周期,从而延时一段时间}/*****************************************函数功能:主函数******************************************/void main(void){while(1){x=0xfe; //第一个灯亮delay(); //调用延时函数x=0xfd; //第二个灯亮delay(); //调用延时函数x=0xfb; //第三个灯亮delay(); //调用延时函数x=0xf7; //第四个灯亮delay(); //调用延时函数x=0xef; //第五个灯亮delay(); //调用延时函数x=0xdf; //第六个灯亮delay(); //调用延时函数x=0xbf; //第七个灯亮delay(); //调用延时函数x=0x7f; //第八个灯亮delay(); //调用延时函数}}//实例8:用不同数据类型控制灯闪烁时间#include<reg51.h> //包含单片机寄存器的头文件/******************************************************函数功能:用整形数据延时一段时间******************************************************/void int_delay(void) //延时一段较长的时间{unsigned int m; //定义无符号整形变量,双字节数据,值域为0~65535 for(m=0;m<36000;m++); //空操作}/******************************************************函数功能:用字符型数据延时一段时间******************************************************/void char_delay(void) //延时一段较短的时间{unsigned char i,j; //定义无符号字符型变量,单字节数据,值域0~255for(i=0;i<200;i++)for(j=0;j<180;j++); //空操作}/****************************************************** 函数功能:主函数******************************************************/ void main(void){unsigned char i;while(1){for(i=0;i<3;i++){P1=0xfe; //P1.0口的灯点亮int_delay(); //延时一段较长的时间P1=0xff; //熄灭int_delay(); //延时一段较长的时间}for(i=0;i<3;i++){P1=0xef; //P1.4口的灯点亮char_delay(); //延时一段较长的时间P1=0xff; //熄灭char_delay(); //延时一段较长的时间}}}//实例9:用P0口、P1口分别显示加法和减法运算结果#include<reg51.h>void main(void){unsigned char m,n;m=43; //即十进制数2x16+11=43n=60; //即十进制数3x16+12=60P1=m+n; //P1=103=0110 0111,结果P1.3、P1.4、P1.7 口的灯被点亮P0=n-m; //P0=17=0001 0001,结果P0.0、P0.4的灯被熄灭}//实例10:用P0、P1口显示乘法运算结果#include<reg51.h> //包含单片机寄存器的头文件void main(void){unsigned char m,n;unsigned int s;m=64;n=71;s=m*n; //s=64*71=4544,需要16位二进制数表示,高8位送P1口,低8位送P0口//由于4544=17*256+192=H3*16*16*16+H2*16*16+H1*16+H0//两边同除以256,可得17+192/256=H3*16+H2+(H1*16+H0)/256//因此,高8位16进制数H3*16+H2必然等于17,即4544除以256的商//低8位16进制数H1*16+H0必然等于192,即4544除以256的余数P1=s/256; //高8位送P1口,P1=17=11H=0001 0001B, P1.0和P1.4口灭,其余亮P0=s%256; //低8位送P0口, P3=192=c0H=1100 0000B,P3.1,P3.6,P3.7口灭,其余亮}//实例11:用P1、P0口显示除法运算结果#include<reg51.h> //包含单片机寄存器的头文件void main(void){P1=36/5; //求整数P0=((36%5)*10)/5; //求小数while(1); //无限循环防止程序“跑飞”}//实例12:用自增运算控制P0口8位LED流水花样#include<reg51.h> //包含单片机寄存器的头文件/****************************************************** 函数功能:延时一段时间******************************************************/ void delay(void){unsigned int i;for(i=0;i<20000;i++);}/****************************************************** 函数功能:主函数******************************************************/ void main(void){unsigned char i;for(i=0;i<255;i++) //注意i的值不能超过255{P0=i; //将i的值送P0口delay(); //调用延时函数}}//实例13:用P0口显示逻辑"与"运算结果#include<reg51.h> //包含单片机寄存器的头文件void main(void){P0=(4>0)&&(9>0xab);//将逻辑运算结果送P0口while(1); //设置无限循环,防止程序“跑飞”}//实例14:用P0口显示条件运算结果#include<reg51.h> //包含单片机寄存器的头文件void main(void){P0=(8>4)?8:4;//将条件运算结果送P0口,P0=8=0000 1000B while(1); //设置无限循环,防止程序“跑飞”}//实例15:用P0口显示按位"异或"运算结果#include<reg51.h> //包含单片机寄存器的头文件void main(void){P0=0xa2^0x3c;//将条件运算结果送P0口,P0=8=0000 1000B while(1); //设置无限循环,防止程序“跑飞”}//实例16:用P0显示左移运算结果#include<reg51.h> //包含单片机寄存器的头文件void main(void){P0=0x3b<<2; //将左移运算结果送P0口,P0=1110 1100B=0xec while(1); //无限循环,防止程序“跑飞”}//实例17:"万能逻辑电路"实验#include<reg51.h> //包含单片机寄存器的头文件sbit F=P1^4; //将F位定义为P1.4sbit X=P1^5; //将X位定义为P1.5sbit Y=P1^6; //将Y位定义为P1.6sbit Z=P1^7; //将Z位定义为P1.7void main(void){while(1){F=((~X)&Y)|Z; //将逻辑运算结果赋给F;}}//实例18:用右移运算流水点亮P1口8位LED #include<reg51.h> //包含单片机寄存器的头文件/*****************************函数功能:延时一段时间*****************************/void delay(void){unsigned int n;for(n=0;n<30000;n++);}/*****************************函数功能:主函数*****************************/void main(void){unsigned char i;while(1){P1=0xff;delay();for(i=0;i<8;i++)//设置循环次数为8{P1=P1>>1; //每次循环P1的各二进位右移1位,高位补0delay(); //调用延时函数}}}//实例19:用if语句控制P0口8位LED的流水方向#include<reg51.h> //包含单片机寄存器的头文件sbit S1=P1^4; //将S1位定义为P1.4sbit S2=P1^5; //将S2位定义为P1.5/*****************************函数功能:主函数*****************************/void main(void){while(1){if(S1==0) //如果按键S1按下P0=0x0f; //P0口高四位LED点亮if(S2==0) //如果按键S2按下P0=0xf0; //P0口低四位LED点亮}}//实例20:用swtich语句的控制P0口8位LED的点亮状态#include<reg51.h> //包含单片机寄存器的头文件sbit S1=P1^4; //将S1位定义为P1.4/*****************************函数功能:延时一段时间*****************************/void delay(void){unsigned int n;for(n=0;n<10000;n++);}/*****************************函数功能:主函数*****************************/void main(void){unsigned char i;i=0; //将i初始化为0while(1){if(S1==0) //如果S1键按下{delay(); //延时一段时间if(S1==0) //如果再次检测到S1键按下i++; //i自增1if(i==9) //如果i=9,重新将其置为1i=1;}switch(i) //使用多分支选择语句{case 1: P0=0xfe; //第一个LED亮break;case 2: P0=0xfd; //第二个LED亮break;case 3:P0=0xfb; //第三个LED亮break;case 4:P0=0xf7; //第四个LED亮break;case 5:P0=0xef; //第五个LED亮break;case 6:P0=0xdf; //第六个LED亮break;case 7:P0=0xbf; //第七个LED亮break;case 8:P0=0x7f; //第八个LED亮break;default: //缺省值,关闭所有LEDP0=0xff;}}}//实例21:用for语句控制蜂鸣器鸣笛次数#include<reg51.h> //包含单片机寄存器的头文件sbit sound=P3^7; //将sound位定义为P3.7/****************************************函数功能:延时形成1600Hz音频****************************************/void delay1600(void){unsigned char n;for(n=0;n<100;n++);}/**************************************** 函数功能:延时形成800Hz音频****************************************/ void delay800(void){unsigned char n;for(n=0;n<200;n++);}/**************************************** 函数功能:主函数****************************************/ void main(void){unsigned int i;while(1){for(i=0;i<830;i++){sound=0; //P3.7输出低电平delay1600();sound=1; //P3.7输出高电平delay1600();}for(i=0;i<200;i++){sound=0; //P3.7输出低电平delay800();sound=1; //P3.7输出高电平delay800();}}}//实例22:用while语句控制LED#include<reg51.h> //包含单片机寄存器的头文件/****************************************函数功能:延时约60ms (3*100*200=60000μs)****************************************/void delay60ms(void){unsigned char m,n;for(m=0;m<100;m++)for(n=0;n<200;n++);}/****************************************函数功能:主函数****************************************/void main(void){unsigned char i;while(1) //无限循环{i=0; //将i初始化为0while(i<0xff) //当i小于0xff(255)时执行循环体{P0=i; //将i送P0口显示delay60ms(); //延时i++; //i自增1}}}//实例23:用do-while语句控制P0口8位LED流水点亮#include<reg51.h> //包含单片机寄存器的头文件/****************************************函数功能:延时约60ms (3*100*200=60000μs)****************************************/void delay60ms(void){unsigned char m,n;for(m=0;m<100;m++)for(n=0;n<200;n++);}/****************************************函数功能:主函数****************************************/ void main(void){do{P0=0xfe; //第一个LED亮delay60ms();P0=0xfd; //第二个LED亮delay60ms();P0=0xfb; //第三个LED亮delay60ms();P0=0xf7; //第四个LED亮delay60ms();P0=0xef; //第五个LED亮delay60ms();P0=0xdf; //第六个LED亮delay60ms();delay60ms();P0=0xbf; //第七个LED亮delay60ms();P0=0x7f; //第八个LED亮delay60ms();}while(1); //无限循环,使8位LED循环流水点亮}//实例24:用字符型数组控制P0口8位LED流水点亮#include<reg51.h> //包含单片机寄存器的头文件/****************************************函数功能:延时约60ms (3*100*200=60000μs)****************************************/void delay60ms(void){unsigned char m,n;for(m=0;m<100;m++)for(n=0;n<200;n++);}/****************************************函数功能:主函数****************************************/void main(void){unsigned char i;unsigned char code Tab[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //定义无符号字符型数组while(1){for(i=0;i<8;i++){P0=Tab[i];//依次引用数组元素,并将其送P0口显示delay60ms();//调用延时函数}}}//实例25:用P0口显示字符串常量#include<reg51.h> //包含单片机寄存器的头文件/*************************************************函数功能:延时约150ms (3*200*250=150 000μs=150ms*************************************************/void delay150ms(void){unsigned char m,n;for(m=0;m<200;m++)for(n=0;n<250;n++);}/*************************************************函数功能:主函数*************************************************/void main(void){unsigned char str[]={"Now,Temperature is :"}; //将字符串赋给字符型全部元素赋值unsigned char i;while(1){i=0; //将i初始化为0,从第一个元素开始显示while(str[i]!='\0') //只要没有显示到结束标志'\0'{P0=str[i]; //将第i个字符送到P0口显示delay150ms(); //调用150ms延时函数i++; //指向下一个待显字符}}}//实例26:用P0 口显示指针运算结果#include<reg51.h>void main(void){unsigned char *p1,*p2; //定义无符号字符型指针变量p1,p2 unsigned char i,j; //定义无符号字符型数据i=25; //给i赋初值25j=15;p1=&i; //使指针变量指向i ,对指针初始化p2=&j; //使指针变量指向j ,对指针初始化P0=*p1+*p2; //*p1+*p2相当于i+j,所以P0=25+15=40=0x28 //则P0=0010 1000B,结果P0.3、P0.5引脚LED熄灭,其余点亮while(1); //无限循环,防止程序“跑飞”}//实例27:用指针数组控制P0口8位LED流水点亮#include<reg51.h>/*************************************************函数功能:延时约150ms (3*200*250=150 000μs=150ms*************************************************/void delay150ms(void){unsigned char m,n;for(m=0;m<200;m++)for(n=0;n<250;n++);}/*************************************************函数功能:主函数*************************************************/void main(void){unsigned char code Tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char *p[ ]={&Tab[0],&Tab[1],&Tab[2],&Tab[3],&Tab[4],&Tab[5],&Tab[6],&Tab[7]};unsigned char i; //定义无符号字符型数据{for(i=0;i<8;i++){P0=*p[i];delay150ms();}}}//实例28:用数组的指针控制P0 口8 位LED流水点亮#include<reg51.h>/*************************************************函数功能:延时约150ms (3*200*250=150 000μs=150ms*************************************************/void delay150ms(void){unsigned char m,n;for(m=0;m<200;m++)for(n=0;n<250;n++)}/*************************************************函数功能:主函数*************************************************/void main(void){unsigned char i;unsigned char Tab[ ]={0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFE,0xFC,0xFB,0xF0,0xE0,0xC0,0x80,0x00,0xE7,0xDB,0xBD,0x7E,0x3C,0x18,0x00,0x81,0xC3,0xE7,0x7E,0xBD,0xDB,0xE7,0xBD,0xDB};//流水灯控制码unsigned char *p; //定义无符号字符型指针p=Tab; //将数组首地址存入指针pwhile(1){for(i=0;i<32;i++) //共32个流水灯控制码{P0=*(p+i); //*(p+i)的值等于a[i]delay150ms(); //调用150ms延时函数}}//实例29:用P0 、P1口显示整型函数返回值#include<reg51.h>/*************************************************函数功能:计算两个无符号整数的和*************************************************/unsigned int sum(int a,int b){unsigned int s;s=a+b;return (s);}/*************************************************函数功能:主函数*************************************************/void main(void){unsigned z;z=sum(2008,2009);P1=z/256; //取得z的高8位P0=z%256; //取得z的低8位while(1);}//实例30:用有参函数控制P0口8位LED流水速度#include<reg51.h>/*************************************************函数功能:延时一段时间*************************************************/void delay(unsigned char x){unsigned char m,n;for(m=0;m<x;m++)for(n=0;n<200;n++);}/*************************************************函数功能:主函数*************************************************/void main(void){unsigned char i;unsigned char code Tab[ ]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};//流水灯控制码while(1){//快速流水点亮LEDfor(i=0;i<8;i++) //共8个流水灯控制码{P0=Tab[i];delay(100); //延时约60ms, (3*100*200=60 000μs)}//慢速流水点亮LEDfor(i=0;i<8;i++) //共8个流水灯控制码{P0=Tab[i];delay(250); //延时约150ms, (3*250*200=150 000μs)}}}//实例31:用数组作函数参数控制流水花样#include<reg51.h>/*************************************************函数功能:延时约150ms*************************************************/void delay(void){unsigned char m,n;for(m=0;m<200;m++)for(n=0;n<250;n++);}/*************************************************函数功能:流水点亮P0口8位LED*************************************************/void led_flow(unsigned char a[8]){unsigned char i;for(i=0;i<8;i++){P0=a[i];delay();}}/*************************************************函数功能:主函数*************************************************/void main(void){unsigned char code Tab[ ]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};//流水灯控制码led_flow(Tab);}//实例32:用指针作函数参数控制P0口8位LED流水点亮#include<reg51.h>/*************************************************函数功能:延时约150ms*************************************************/void delay(void){unsigned char m,n;for(m=0;m<200;m++)for(n=0;n<250;n++);}/*************************************************函数功能:流水点亮P0口8位LED*************************************************/void led_flow(unsigned char *p) //形参为无符号字符型指针{unsigned char i;while(1){i=0; //将i置为0,指向数组第一个元素while(*(p+i)!='\0') //只要没有指向数组的结束标志{P0=*(p+i);// 取的指针所指变量(数组元素)的值,送P0口delay(); //调用延时函数i++; //指向下一个数组元素}}}/*************************************************函数功能:主函数*************************************************/void main(void){unsigned char code Tab[ ]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE, 0xFF,0xFE,0xFC,0xFB,0xF0,0xE0,0xC0,0x80,0x00,0xE7,0xDB,0xBD,0x7E,0xFF,0xFF,0x3C,0x18,0x0,0x81,0xC3,0xE7,0xFF, 0xFF,0x7E};//流水灯控制码unsigned char *pointer;pointer=Tab;led_flow(pointer);}//实例33:用函数型指针控制P1口灯花样#include<reg51.h> //包含51单片机寄存器定义的头文件unsigned char code Tab[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; //流水灯控制码,该数组被定义为全局变量/**************************************************************函数功能:延时约150ms**************************************************************/void delay(void){unsigned char m,n;for(m=0;m<200;m++)for(n=0;n<250;n++);}/**************************************************************函数功能:流水灯左移**************************************************************/void led_flow(void){unsigned char i;for(i=0;i<8;i++) //8位控制码{P0=Tab[i];delay();}}/**************************************************************函数功能:主函数**************************************************************/void main(void){void (*p)(void); //定义函数型指针,所指函数无参数,无返回值p=led_flow; //将函数的入口地址赋给函数型指针pwhile(1)(*p)(); //通过函数的指针p调用函数led_flow()}//实例34:用指针数组作为函数的参数显示多个字符串#include<reg51.h> //包含51单片机寄存器定义的头文件unsigned char code str1[ ]="Temperature is tested by DS18B20";//C语言中,字符串是作为字符数组来处理的unsigned char code str2[ ]="Now temperature is:"; //所以,字符串的名字就是字符串的首地址unsigned char code str3[ ]="The Systerm is designed by Zhang San";unsigned char code str4[ ]="The date is 2008-9-30";unsigned char *p[ ]={str1,str2,str3,str4}; //定义p[4]为指向4个字符串的字符型指针数组/**************************************************************函数功能:延时约150ms**************************************************************/void delay(void){unsigned char m,n;for(m=0;m<200;m++)for(n=0;n<250;n++);}/**************************************************************函数功能:流水点亮P0口8位LED**************************************************************/void led_display(unsigned char *x[ ]) //形参必须为指针数组{unsigned char i,j;for(i=0;i<4;i++) //有4个字符串要显示{j=0; //指向待显字符串的第0号元素while(*(x[i]+j)!='\0') //只要第i个字符串的第j号元素不是结束标志{P0=*(x[i]+j); //取得该元素值送到P0口显示delay(); //调用延时函数j++; //指向下一个元素}}}/**************************************************************函数功能:主函数**************************************************************/void main(void){unsigned char i;while(1){for(i=0;i<4;i++)led_display(p); //将指针数组名作实际参数传递}}//实例35:字符函数ctype.h应用举例#include<reg51.h> //包含51单片机寄存器定义的头文件#include<ctype.h>void main(void){while(1){P3=isalpha('_')?0xf0:0x0f;//条件运算,若'_'是英文字母,P3=0xf0 }}//实例36:内部函数intrins.h应用举例#include<reg51.h> //包含51单片机寄存器定义的头文件#include<intrins.h> //包含函数isalpha()声明的头文件/*************************************************函数功能:延时约150ms*************************************************/void delay(void){unsigned char m,n;for(m=0;m<200;m++)for(n=0;n<250;n++);}/*************************************************函数功能:主函数*************************************************/void main(void){P3=0xfe; //P3=1111 1110Bwhile(1){P3=_crol_(P3,1);// 将P3的二进制位循环左移1位后再赋给P3。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机C语言编程模板 程序名: 编写人: 编写时间: 20 年 月 日 硬件支持: 接口说明: 修改日志: NO.1- /********************************************************************************************* 说明:
/*********************************************************************************************/ #include //通用89C51头文件(只留下实际使用的单片机所对应的头文件)
#include //设定插入点 #include //字符处理 #include //定义错误码 #include //浮点数处理 #include //文件输入/输出 #include //参数化输入/输出 #include //数据流输入/输出 #include //定义各种数据类型最值常量 #include //定义本地化函数 #include //定义数学函数 #include //定义输入/输出函数 #include //定义杂项函数及内存分配函数 #include //字符串处理 #include //基于数组的输入/输出 #include //定义关于时间的函数 #include //宽字符处理及输入/输出 #include //宽字符分类 #include //51基本运算(包括_nop_空函数)
sfr [自定义名] = [SFR地址] ; //按字节定义SFR中的存储器名。例:sfr P1 = 0x90; sbit [自定义名] = [系统位名] ; //按位定义SFR中的存储器名。例:sbit Add_Key = P3 ^ 1; bit [自定义名] ; //定义一个位(位的值只能是0或1)例:bit LED; #define [代替名] [原名] //用代替名代替原名。例:#define LED P1 / #define TA 0x25
#define KEY P1 //键盘所连接的I/O接口组定义 sbit SPEAKER = P3^7; //扬声器连接定义 sbit DQ = P2 ^ 5;//ds18B20 sbit RS = P1^0;//模式位,为0输入指令,为1输入数据 sbit RW = P1^1;//读写位,为0读,为1写 sbit E = P1^2;//使能位 #define Lcd_Bus P0 //数据总线
unsigned char [自定义名] ; //定义一个0~255的整数变量。 unsigned int [自定义名] ; //定义一个0~65535的整数变量。
data 字节寻址片内RAM,片内RAM的128字节(例:data unsigned char a;) bdata 可位寻址片内RAM,16字节,从0x20到0x2F(例:bdata unsigned char a;) idata 所有片内RAM,256字节,从0x00到0xFF(例:idata unsigned char a;) pdata 片外RAM,256字节,从0x00到0xFF(例:pdata unsigned char a;) xdata 片外RAM,64K字节,从0x00到0xFFFF(例:xdata unsigned char a;) code ROM存储器,64K字节,从0x00到0xFFFF(例:code unsigned char a;)
/********************************************************************************************* 函数名:毫秒级CPU延时函数 调 用:DELAY_MS (?); 参 数:1~65535(参数不可为0) 返回值:无 结 果:占用CPU方式延时与参数数值相同的毫秒时间 备 注:应用于1T单片机时i<600,应用于12T单片机时i<125(在此预为1T单片机数值) /*********************************************************************************************/ void DELAY_MS (unsigned int a){ unsigned int i; while( --a != 0){ for(i = 0; i < 600; i++); } } /*********************************************************************************************/
----------------------------------------------------------------------------- M1 M0 方式 说明 0 0 0 13位T/C,由TL低5位和TH的8位组成13位计数器 0 1 1 16位T/C,TL和TH共16位计数器 1 0 2 8位T/C,TL用于计数,当TL溢出时将TH中的值自动写入TL 1 1 3 两组8位T/C ----------------------------------------------------------------------------- /********************************************************************************************* 函数名:定时/计数器初始化函数 调 用:T_C_init(); 参 数:无 返回值:无 结 果:设臵SFR中T/C1和(或)T/C0相关参数 备 注:本函数控制T/C1和T/C0,不需要使用的部分可用//屏蔽 /**********************************************************************************************/ void T_C_init (void){ TMOD = 0x11; //高4位控制T/C1 [ GATE,C/T,M1,M0,GATE,C/T,M1,M0 ] EA = 1; //中断总开关
TH1 = 0xFF; //16位计数寄存器T1高8位(写入初值) TL1 = 0xFF; //16位计数寄存器T1低8位 ET1 = 1; //T/C1中断开关 TR1 = 1; //T/C1启动开关 //TH0 = 0x3C; //16位计数寄存器T0高8位 //TL0 = 0xB0; //16位计数寄存器T0低8位(0x3CB0 = 50mS延时) //ET0 = 1; //T/C0中断开关 //TR0 = 1; //T/C0启动开关 } /**********************************************************************************************/
/********************************************************************************************* 函数名:定时/计数器1中断处理函数 调 用:[T/C1溢出后中断处理] 参 数:无 返回值:无 结 果:重新写入16位计数寄存器初始值,处理用户程序 备 注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致 /**********************************************************************************************/ void T_C1 (void) interrupt 3 using 3{ //切换寄存器组到3 TH1 = 0x3C; //16位计数寄存器T1高8位(重新写入初值) TL1 = 0xB0; //16位计数寄存器T1低8位(0x3CB0 = 50mS延时)
//函数内容 } /**********************************************************************************************/
/********************************************************************************************* 函数名:定时/计数器0中断处理函数 调 用:[T/C0溢出后中断处理] 参 数:无 返回值:无