C51 继电器 个人笔记】的更多相关文章

一句话 小电流控制大电流的开关. 电路图 给J2端口一个低电平,三极管导通,线圈吸合 一般用P1^4口连接 #include <reg51.h> #define u16 unsigned int #define u8 unsigned char sbit delay = P1^4; void main(void) { delay = 0; while(1); }…
音调:频率 音量:高低电平占空比 有源:上面没有加号,只需高低电平即可发声 无源:上面有加号,不仅要电平,还要, 的频率 这里的有源不是指电源的"源",而是指有没有自带震荡电路,有源蜂鸣器自带了震荡电路, 一通电就会发声:无源蜂鸣器则没有自带震荡电路,必须外部提供 2~5Khz 左右的方波驱动, 才能发声. void ring() { beep=~beep; delay(200); }…
总架构图 IE寄存器 控制各个中断源的屏蔽与允许 TCON寄存器 各个中断源的请求标志位&有效信号的规定 中断源及其优先级 中断号写程序的时候要用 CPU处理中断三原则 1.CPU同时接收到几个中断时,首先响应优先级别最高的中断请求. 2.正在进行的中断过程不能被新的同级或低优先级的中断请求所中断. 3.正在进行的低优先级中断服务,能被高优先级中断请求所中断. 中断响应条件 中断源有中断请求: 此中断源的中断允许位为1: CPU开中断(即EA=1). 代码写法 main函数中: //以外部中断0…
C51的周期 结构图 两个功能寄存器 51单片机定时/计数器的工作由两个特殊功能寄存器控制.TMOD用于设置其工作方式:TCON用于控制其启动和中断申请. 工作方式寄存器TMOD 其中方式一和方式二常用 控制寄存器TCON 第四位用于控制外部中断,详见C51中断个人笔记 初始化函数中要完成的工作: 给TMOD赋值,确定工作方式 计算初值,写入TH0,TL0或TH1,TL1 中断允许控制,EA和ET0 或ET1的置位为1 TR0或TR1置位,启动定时计数器 计数初值的计算 首先知道振荡周期是多少,…
转自:http://blog.csdn.net/gongyuan073/article/details/7856878 单片机C51学习笔记 一,   C51内存结构深度剖析 二,   reg51.头文件剖析 三,   浅淡变量类型及其作用域 四,   C51常用头文件 五,   浅谈中断 六,   C51编译器的限制 七,                        小淡C51指针 八,                        预处理命令                        …
在利用keil进行8051单片机编程的时,常常需要进行绝对地址进行访问.特别是对硬件操作,如DA AD 采样 ,LCD 液晶操作,打印操作.等等.C51提供了三种访问绝对地址的方法: 1. 绝对宏:     在程序中,用“#include<absacc.h>”即可使用其中定义的宏来访问绝对地址,包括: CBYTE.XBYTE.PWORD.DBYTE.CWORD.XWORD.PBYTE.DWORD 具体使用可看一看absacc.h便知 例如: #include<absacc.h> #…
1.单片机C51编程规范- 前言  为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范. 2.单片机C51编程规范-范围 本标准规定了程序设计人员进行程序设计时必须遵循的规范.本规范主要针对C51编程语言和keil编译器而言,包括排版.注释.命名.变量使用.代码可测性.程序效率.质量保证等内容. 3.单片机C51编程规范-总则 格式清晰  注释简明扼要  命名规范易懂  函数模块化  程序易读易维护  功能准确实现  代码空间效率和时间效率高  适度的可扩展性 4.单片机C…
第一章 Keil C51开发系统基本知识 第一节 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上.结构性.可读性.可维护性上有明显的优势,因而易学易用.用过汇编语言后再使用C来开发,体会更加深刻.Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面.另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑…
一 关于宏常量的长度:C51中定义一个常数宏(默认是16位的),如果用宏表示一个32位的宏而不加'L'标志的话就会出错.如 #define BLOCK_A_BASEADDR  18*64*1024 //定义一个外部FLASH分区地址时一直出错18*64*1024=0,这怎么可能呢?但确实如此. 后来得知要这样定义才可以#define BLOCK_A_BASEADDR  18L*64L*1024L //为何加了L就可以了呢?L表示long int 型,相当于强制定义也就不存在超出范围的问题了.…
8段led管构成一个数字. 开发板上共有8个数字. 每个数字有一个使能端(段选引脚) 每个数字的位选端(选择8段led管哪些亮,即构成什么图案)并联在一起 轮流点亮不同数字,速度很快,视觉暂留,从而形成8个数字同时亮的效果 #include <reg51.h> typedef unsigned int u16; typedef unsigned char u8; #define DIG P0 sbit LSA = P2^2; sbit LSB = P2^3; sbit LSC = P2^4;…