没有办法看书,只好在网上找资料,首先看到这个:单片机的c语言教程...由磁动力工作室明浩编写.51测试网友情转载 http://www.51c51.com/test/c02.htm,然后是这个 实验及实践课题 闪烁灯http://www.51c51.com/51test/cc401.htm。 笔记转贴: 一、单片机C51基本资料:1.电源引脚 Vcc 40 电源端 GND 20 接地端 *工作电压为5V,另有AT89LV51工作电压则是2.7-6V, 引脚功能一样。 4.输入输出引脚 (1) P0端口[P0.0-P0.7] P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8个TTL。 对内部Flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。 在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。 (2) P1端口[P1.0-P1.7] P1是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。 对内部Flash程序存储器编程时,接收低8位地址信息。 (3) P2端口[P2.0-P2.7] P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。 对内部Flash程序存储器编程时,接收高8位地址和控制信息。 在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。 (4) P3端口[P3.0-P3.7] P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。 对内部Flash程序存储器编程时,接控制信息。除此之外P3端口还用于一些专门功能,具体请看 表2-2.。 *P1-3端口在做输入使用时,因内部有上接电阻,被外部拉低的引脚会输出一定的电流。 P3引脚 兼用功能 P3.0 串行通讯输入(RXD) P3.1 串行通讯输出(TXD) P3.2 外部中断0( INT0) P3.3 外部中断1(INT1) P3.4 定时器0输入(T0) P3.5 定时器1输入(T1) P3.6 外部数据存储器写选通WR P3.7 外部数据存储器写选通RD 二、电路图:http://www.51c51.com/51test/cc401.18.jpg 这个电路图估计是最简单的应用了,EA为高电平时,用户在0000H至0FFFH范围内使用内部ROM;VCC脚直接接电源;RST脚拉低;X1和X2 XTAL1 XTAL2使用内部振荡器模式 XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端;GND脚直接接地。P1脚接发光二极管负极,二极管正极接VCC,这样P1脚拉高二极管不发光,拉低二极管发光。当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。 三、ASM汇编源码:START: CLR P1.0 P1.0 LCALL DELAY SETB P1.0 LCALL DELAY LJMP START DELAY: MOV R5,#20 ;延时子程序,延时0.2秒 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END 这个就是数数了,石英晶体为12MHz,因此,1个机器周期为1微秒,一个指令周期2微秒,20×248×2=9920 + 20×(2+2)=80 基本就是10MS了。 四、C51源码#include <AT89X51.H> sbit L1=P1^0; void delay02s(void) //延时0.2秒子程序 { unsigned char i,j,k; for(i=20;i>0;i--) for(j=20;j>0;j--) for(k=248;k>0;k--); } void main(void) { while(1) { L1=0; delay02s(); L1=1; delay02s(); } } 字体:大 中 小 |