推荐阅读最新更新时间:2024-03-16 15:19
C51串口通信(中断模式)T2产生波特率
#include reg52.h #define uchar unsigned char uchar temp; void serial()interrupt 4 using 1 { if(RI) { RI=0; temp=SBUF; SBUF=temp; } else if(TI) TI=0; } main() { uchar string = AT89C52 Microcomputer!Designer: Grarry Meng ; uchar i=0; RCLK=1; TCLK=1; TH2=0XFF; TL2=0XDC; RCAP2H=0XFF; RCAP2L=0XDC;
[单片机]
全功能数字电子钟(C51单片机应用开发)
一、设计目的: 通过单片机应用产品的设计与调试过程,巩固课程所学理论知识,初步了解单片机应用系统设计与调试的方法。 二、设计要求: 设计一个以AT89S51单片机为核心的数字电子钟控制器,实现电子钟的时间、日期交替显示、闹钟功能,并可通过按钮开关或键盘切换显示内容、调整参数、设置闹钟,在单片机实验板上模拟调试实现控制器的功能。具体设计要求如下: 1.开机自检,检查相关接口及数码管显示器、指示灯、蜂鸣器等外设是否正常。 2.8位数码管显示器平常以一定的时间间隔、合适的格式显示时间和日期信息,时间显示时、分、秒;日期显示年(2000~2099)、月、日;设置闹钟功能时显示时、分、开/关状态。 3.可通过按键设定时间、日期
[单片机]
实时时钟芯片DS1302的C51程序列子
/*********************************************************************/ /* 实时时钟模块 时钟芯片型号:DS1302 */ /*/ /*********************************************************************/ sbit T_CLK = P2^7; /*实时时钟时钟线引脚 */ sbit T_IO = P1^4; /*实时时钟数据线引脚 */ sbit T_RST = P1^5; /*实时时钟复位线引脚 */ /*****************************************
[单片机]
深入C51中断向量表
在FLASH中有一组特殊的保留单元000H~00ABH 0000H-0002H 这三个单元包含一个无条件跳转指令(LJMP),当系统复位后,PC=0000H,跳转到main函数(不确切) LJMP 是三字节指令。就是由 指令码02H(一个字节) + 16位地址(2个字节) 组成 16位地址就是Main()函数的地址,其实也不然,由于main()函数在调用之前,要进行堆栈的初始化之类的工作,在KEIL中,这部分代码是自动生成的(对于C程序来说),跳转地址实际就是这个堆栈汇编的代码开头处! 以下是一个C程序转换成汇编的部分代码 C:0x0000 020410 LJMP C:0410
[单片机]
C51---12 AT24C02 (I2C总线)
存储器介绍 存储器简化模型 AT24C02 引脚以及电路 内部结构框图 I2C总线❗ I2C总线介绍 I2C电路规范 I2C时序❗ I2C数据帧❗ AT24C02数据帧❗ AT24C02数据存储 功能 按键1 使数字+1 按键2 使数字-1 按键3 将数字写入AT24C02 按键4 读出AT24C02刚刚写入的数据 代码 main.c #include REGX52.H #include LCD1602.h #include Key.h #include AT24C02.h #include Delay.h unsigned char KeyNum; unsign
[单片机]
单片机C51延时时间怎样计算?
C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。 以某晶振为12MHz的 单片机 为例,晶振为12MHz即一个机器周期为1us。 一. 500ms延时子程序 程序: void delay500ms(void) { unsigned char i,j,k; for(i=15;i 0;i--) for(j=202;j 0;j--) for(k=81;k 0;k--); } 计算分析: 程序共有三层循环 一层循环n
[单片机]
如何采用C51单片机读写CAT24C32
#include #include//我的自定义LCD1602头文件 /*--------------------------------------------------------------- 24C32可存储4K(1024*4)个字节(8bit),因此寻址地址最大为0x0FFF,24C32为从机。 ----------------------------------------------------------------*/ #defineWriteDeviceAddress0x0A2//定义器件在I2C总线中的写地址(注意:根据自定义从机地址接口改变) #defineReadDviceAdd
[单片机]
C51编程19-中断篇(串行通讯3)
MCS-51单片机提供了4种串口的方式,但是我们只有方式1最常用(可变的10位串行通讯方式),下面就方式1的使用进行讲解。 在开始之前先明确一个概念,中断会产生中断标志位,而CPU检测到中断标志位后,如果没有其他更高的中断在执行,CPU会响应该中断,并进入中断服务函数。串行通讯属于中断方式的一种,它服从这个概念。此外串行通讯并不是需要进入串行通讯的时候,会产生中断标志位;而是发送或者接收成功后,会产生中断标志位。 通过中断向量,可以知道串行通讯只有一个中断号4,也就是说当进入无论是发送或者接收成功,都会触发中断服务函数,因此如果需要区分发送与接收需要在中断服务函数中实现区分,可以通过判断中断标志位(TI == 1或者RI
[单片机]