学习51单片机杂记2

来源:互联网 发布:北京婚纱照价位 知乎 编辑:程序博客网 时间:2024/04/30 04:21

 1、与的运算符为“·”,运算规律:0·0=0  0·1=0  1·1=1

2、或得运算符为“+”
3、PO=0x7f;//P0.7亮     
4、使用循环左移、循环右移,需要#include <intrins.h>头文件
5、锁存器74HC573
6、在keil中不可以写for(int i=0;i<10;i++),在for循环中,不可以初始化i。
7、写流水灯是,应该为:
P0=0xfe;
for(i=0;i<8;i++)
{
P0=_cror_(P0,1);
delay(50);
}
而不能为:
for(i=0;i<7;i++)
{
P0=0xfe;
P0=_cror_(P0,1);
delay(50);
}
8、不能创建sbit类型的数组
9、二极管有八个,P0=0xfe;已经点亮一个灯,因此,只需循环右移7次。
P0=0xfe;
delay(50);
for(i=0;i<7;i++)
{
P0=_cror_(P0,1);
delay(50);
}
10、
0x3f  , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,
   0  1 2     3      4       5
0x7d , 0x07 , 0x7f  , 0x6f , 0x77 , 0x7c ,
   6  7 8  9    A     B
0x39 , 0x5e , 0x79 , 0x71 , 0x00
   C     D      E      F     无显示
11、uchar code table[]={};code (编码表)编译完放在程序存储区中,不用放在随机存储器中。
随机存储器有限(数据存储器),51为128字节,RAM
uint 2字节,uchar 1字节
12、8051有5哥中断源,8052有6个,可以实现二级中断嵌套
5个中断源:INTO、T0、INT1、T1、(TX和TX)。共5个
13、EA中断允许总控制器。EA=0,关闭。EA=1,开启。
14、中断响应条件
 中断源有中断请求;
 此中断源的中断允许位为1;
 CPU开中断(即EA=1)。
15、所有可以被8整除的可以直接位寻址
16、在头文件中,已经有定义sbit EA=IE^7;
17、IT0=1;与TCON=0x01;等效。都是让中断以跳变沿触发
18、定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
19、由溢出时计数器的值减去计数初值才是加1计数器的计数值。
20、中断子程序中interrupt后
0代表外部中断0
1定时/计数器0
2代表外部中断1
3定时/计数器1
4代表串行口
21、初始化程序应完成如下工作:
对TMOD赋值,以确定T0和T1的工作方式。
计算初值,并将其写入TH0、TL0或TH1、TL1。
中断方式时,则对IE赋值,开放中断。
使TR0或TR1置位,启动定时/计数器定时或计数。
22、工作方式寄存器TMOD
工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下:
GATE、C/T、M1、M0、GATE、C/T、M1、M0
23、GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。
c/t:定时/计数模式选择位。c/t=0为定时模式;c/t=1为计数模式。
M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。
24、M1M0:
00 方式0 13位定时/计数器
01 方式1 16位定时/计数器
10 方式2 8位自动重装定时/计数器
11 方式3 T0分为两个独立的8位定时/计数器;T1此方式停止计数
25、中断允许控制
CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。
IE:
EX0(IE.0),外部中断0允许位;
ET0(IE.1),定时/计数器T0中断允许位; 
EX1(IE.2),外部中断0允许位;
ET1(IE.3),定时/计数器T1中断允许位;
ES(IE.4),串行口中断允许位;
EA (IE.7), CPU中断允许(总允许)位。
26、TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下:
TF1、TR1、TF0、TF0
TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。
TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。
TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。
TR0(TCON.4):T0运行控制位,其功能与TR1类同。
27、具体程序如下:
void main()中:
TMOD=0x01;//设置定时器0为工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
中断子程序:
void exter0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
28、void timer0() interrupt 1 using 0  //using 0表示使用第0组通用寄存器,一共有7组.分别为P0~P7
原创粉丝点击