推荐阅读最新更新时间:2024-11-07 10:24
8051单片机教程第十一课:算术运算类指令
不带进位位的加法指令 ADDA,#DATA;例:ADDA,#10H ADDA,direct;例:ADDA,10H ADDA,Rn;例:ADDA,R7 ADDA,@Ri;例:ADDA,@R0 用途:将A中的值与其后面的值相加,最终结果否是回到A中。 例:MOVA,#30H ADDA,#10H 则执行完本条指令后,A中的值为40H。 下面的题目自行练习 MOV34H,#10H MOVR0,#13H MOVA,34H ADDA,R0 MOVR1,#34H ADDA,@R1 带进位位的加法指令 ADDCA,Rn ADDCA,direct ADDCA,@Ri A
[单片机]
51单片机模拟I2C总线程序
#include stdio.h #include absacc.h sbit led=P1^0; sbit led2=P1^1; sbit scl=P3^5; //24c02 SCL sbit sda=P3^4; //24c02 SDA sbit DOG=P1^7; //狗 uchar x24c02_read(uchar address); //从24c02的地址address中读取一个字节数据 void x24c02_write(uchar address,uchar info); //向24c02的address地址中写入一字节数据info void x24c02_init(); //24c02初始化子程序 void
[单片机]
8051单片机串口接收字符并将其ASCII码(小于100)显示在数码管上
#include STC89C5xRC.H unsigned char code DIG_CODE = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; char buf; void delay()//提供时延 { int i, j; for(i = 0; i 15; i ++) for(j = 0; j 15; j ++) ; } void disp_digit(char d) { //显示个位数字 P0 = DIG_CODE ; P2 = 0;// 0000 0000 - (P24, P23,
[单片机]
STC8A/STC8H通用的最小系统板
STC8(包括之前的STC15)因为自带晶振, 所以最小电路需要的外围元件几乎为0 -- 手册上画的两个电容不加也没问题, 直接加上5V电源就能跑. 这样只需要用排针把管脚都引出就行了. 唯一不方便的就是开发的时候, 断电上电比较麻烦, 毕竟排针来回拔插一是每次要对准比较费事, 二是这样来回操作时间长容易坏. 所以还是需要有一个简单的开关. 不同封装的管脚分布不一致, 所以统一用一个针座的方案就行不通了, 还是用杜邦线吧, 做一个在MCU和USB2TTL之间串联的小模块. 最开始就是想简单的加上一个开关, 能控制VCC和GND同时通断, 后来看了下手册推荐的下载电路, 里面还有另外4个元件 1N5819, 对应MCU的
[单片机]
51单片机 1602液晶显示静态字符
#include reg52.h #define LCD1602_DB P0 typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long ulong; sbit LCD1602_RS = P1^0; sbit LCD1602_RW = P1^1; sbit LCD1602_E = P1^5; void initLCD1602(); void LCDShowStr(uchar i, uchar j, uchar * pCh); void LCDWaitRdy(); void
[单片机]
51单片机一个输出口显示多位输出
电路图 #include reg51.h sbit LE0=P3^0; sbit LE1=P3^1; sbit LE2=P3^2; sbit LE3=P3^3; int i,j,k; int xx ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void yanchi(int ms) { while(ms--) { for(i=0;i 100;i++); } } void main() { while(1) { for(j=0;j 10000;j++) { P2=xx ;//千 LE
[单片机]
关于51单片机电子时钟精度的问题
前几天用STC89C52单片机制作了一个电子时钟,经过一段时间的实验,发现时间精度存在误差,一分钟慢4秒左右。 这可了不得,十分钟就要慢40秒,一天下来不得慢半96分钟!!! 这个单片机晶振频率为11.0592mhz,和大部分时钟的晶振频率相同,应该没有问题。 后天考虑到源代码: 在定时器中断函数里: void t0(void) interrupt 1 using 0 { tcount++; if(tcount==4000) {tcount=0; second++; if(second==60) {second=0; minute++; if(minute==60) {minute=0;
[单片机]
51单片机8*8点阵LED显示原理及程序
在8X8点阵LED上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。 1. 程序设计内容 8X8点阵LED工作原理说明 :8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图49所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述: 一根竖柱:对应的列置1,而行则采用扫描的方法来实现。 一根横柱:对应的行置0,而列则采用扫描的方法来实现。 2. 硬件电路 3.汇编源程序 ORG 00H
[单片机]