版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机学习中的心得在单片机的学习中,一定要脚踏实地,有错误的时候先想想自己在哪做错了,而不是去考虑实验板哪有问题,更重要的就 是一定要从简单到复杂。不可盲目的去一味的追求速度。1.led数码管中的数字0f表示:共阳极:table= 0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,oxf8,0 x80,ox 10;共阴极:table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x67,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;2.led数码管表示字母h, l为(共
2、阳极的)h=0 x89;l=0 xc7;3.一个常用的延时程序void delay(unsigned int t)/t 是作为时间长度的参数,其中 t65535int i=();while(i0;x-)for(y=l 10;y0;y);延时10ms的例子,用12mhz的石英晶体1)汇编语言:delay: mov r6,#20di:mov r7,248djnz r7,$djnz r6,d1ret只需再用一个寄存器存储数据x,就可以延时x*10ms了。2) c语言void delay(int t)/t* 10ms 即为延时时间unsigned char i,j,k;for(;t0;t)for(i=
3、20;i0;i-)foro=20;j0;j-)for(k=248;k0;k-);4、在程序中一定要注意不能超过了数据的界限0255、28127,065535,5、在编写程序的过程中可以使用一些定义是程序看起来简单好写,女口:c语言中的define unit unsigned int或者汇编语言中的delaytime equ 2006在c语言中有个函数是_nop_()相当于汇编中的nop指令7在操作at24c04吋要先送一个设备选择代码格式如下:device codechip ableblock selectrwbitb7b6b5b4b3b2blbodevice1010e2ela8r=1sele
4、ctw=0从而选择要对该设备做什么!&单片机引脚在上电时默认置高电平;在矩阵键盘检测时,如果高电平和低电平连接在一个按键的两端, 那么当按键按下时,高电平变为低电平。9、在单片机的学习中,一定要脚踏实地,有错误的时候先想想自己 在db1db 20h,21,25,52h哪做错了,而不是去考虑实验板哪有问题,更重要的就是定要从 简单到复杂。不可盲目的去一味的追求速度。10、单片机最小系统 p0-p3:通用 i/o 口;vcc:电源端,一般接 5v;gnd:电源地;xtal1, xtal2:外接晶体振荡器,不能超过 24m;需加微调电容,一般为 30pf;ale/prog:地址锁存允许信号端
5、;ea/vpp:外部程序存储器地址允许输入端/固化编程电压输入端;rst/vpd:rst是复位信号输入端,平时为低电平;高电平有效。当此输入端保持 2个机器周期的高电平时,就可以完成复位操作。rst引脚的第二功能是备用电源的输入端。ale/prog:(address latch enable/ programming)当单片机上电正常工作后,ale 引 脚不断向外输出正弦脉冲信号,此频率为振荡器频率的 1/6。cpu访问外部存储器 时,ale作为锁存低 8 位地址的控制信号。此引脚的第二功能 prog作为 8751 编 程脉冲输入端使用。 psen:(program storeenable)在
6、访问片外存储器时,此端定时输出负脉冲作为片夕卜 存储器的选通信号。 ea/vpp: (enable address/voltage pulse of programming)当 ea 接高电平时,cpu 访问片内 rom,并执行内部程序存储器中的指令,但当 pc (程序计数器)的值超过 4k时,将自动转去执行片外存储器内的程序。当 ea脚接低电平时,cpu只访问片 外 rom并执行外部程序存储器中的指令, 而不管是否有片内程序存储器。 vpp是 对 8751片内 rom固化程序时,作为施加较高编程电压(12v21v)的输入端。 p0p3: 4 个 8 位双向输入输岀端口,每个端口都有锁存器、输
7、出驱动器和输入缓冲 器。4 个端口都可以做输入输出口使用,其中,p0和 p2通常用于对外部存储器的访 问。在这种方式下,把 p0 口作为地址/数据总线使用,分时输出外部存储器的地址 和传送 8位数据。当扩充外部存储器的地址为 16位时,p2 口作为地址总线的高 8 位地址使用。-1011va:pio1pllp123p134p145p156p167p178int1p20imup21t189s52醫10p24p25ea/vpp26p27xix2vccgmdresetrxdtxd丽alepwrpseninti 13into 121 01231 451 67pppppppp39 poo38 p0137
8、 p0236 p()335 po434 p0533 p0632 p07c8圳10ufr5wr 1621p2022p223p2224p2325p2426p2527p2628p27vce40 t10 rxdtcp30 ale29 psenpo口必须接上拉电阻;在读信号 z前数据 z前,先要向相应的锁存器做写 1 操作的 i/o口称为准双向口;当 p0 作为 i/o 口使用吋,特别是作为输出吋,输 11!级属于开漏电路,必须外接上拉 电阻才会有高电平输出;如果作为输入,必须先向相应的锁存器写“1,才不会影响 输入电平。当 cpu内部控制信号为“厂时,p0 口作为地址/数据总线使用,这时,p0 口就无
9、法 再作为 i/o 口使用了。p1 口是用户专用 8 位准双向 i/o 口,具有通用输入/输出功能,每一位都能独立地设 定为输入或输出。当有输出方式变为输入方式时,该位的锁存器必须写入 t”,然后 才能进入输入操作。并行接口的简单扩展p0ale 80c31wrp2. 7丽11、c 51数据的存储类型12、中断服务程序函数名()interrupt n 13、i/o口定#include #define prot xbyte0 x 1000或用指针定义例:查找零的个数(在2000h-200fh中查出有几个字 节是零,把个数放在2100h单元中)汇编语言程序l00:org 0000hmov r0,#1
10、0h;查找 16个字节mov r1 ,#00hmov dptr,#2000hlil:movxa,dptrcjnea,#00h,l16 ;取出内容与 ooh相等吗?incr1;取出个数加 1l16:inc dptrdjnz r0,lh;未完继续mov dptr,#2100hlie:mova,r1movx dptr,a 湘同数个数送 21 oohsjmpl1e查找零的个数c-51程序#include main () unsigned char xdata *p=0 x2000;/*指针p指向2000h单元*/int n=0,i;for(i=0;i16;i+)名存储空间位置data直接寻址片内ram
11、bdata可位寻址片内ramidata间接寻址片内rampdata片外页ramxdata片外ramcode程序rom长度8位1位8位8位16位16位数据范02550/1()2550255065535065535/*若该单元内容为零,则n+1 */*指针指向下一单元*/*指针p指向2100h单元*/*把个数放在2100h单元中*/14、累加器a与片外ram之间的数据传递类指令movx a, rimovx ri, amovx a, dptrmovx dptr, a在 51中,与外部存储器 ram打交道的只可以是 a累加器。所有 蛊要送入外部 ram的数据必需要通过 a送去,而所有要读入的外部 ra
12、m中的数据也必需通过 a读入。在此我们可以看出内外部 ram的区别了,内部 ram间可以直接进行数据的传递,而 外部则不行。比如,要将外部 ram屮某一单元(设为 0100h单元的数据)送入另一个单元(设为 0200h单元),也必须先将 0100h单元中的内容读入 a,然后再送到 0200h单元中去。其程序如下:mov dptr, #0100hmovx a, dptrmov dptr, #0200hmovx dptr, a15、读程序存储器指令movc a, a+dptrmovc a, a+pc本组指令是将 rom中的数送入 a中。本组指令也被称为查表指令,常用此指令來查一 个己做好在 rom
13、中的表格说明:查找到的结果被放在 a屮,因此,本条指令执行前后,a屮的值不一定相同。16、堆栈操作push direct ;spjsp+1,(sp)(direct)pop direct ; (direct) (sp), spsp-1第一条为压入指令,就是将 direct +的内容送入堆栈屮,第二条为弹出指令,就是将堆 栈中的内容送回到 direct中。例:mov sp, #5fhmov a, #100mov b, #20push accpush b f(*p=o) n卄;p+;p=0 x2100;*p=n;则执行第一条 push acc指令是这样的:将 sp中的值加 1,即变为 60h,然后将 a中 的值送到 60h单元中,因此执行完本条指令后,内存 60h单元的值就是 100,同样,执行 pushb吋,是将 sp+1,即变为 61h,然后将 b中的值送入到 61h单元中,即执行完本条 指令后,61h单元中的值变为 20。17.返回指令ret;子程序返回指令reti;中断子程序返回指令两者不能互换使用。ret指令的执行过程是:堆栈栈顶内容
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 张湾区人民医院2026年度公开招聘专业技术人员备考题库完整参考答案详解
- 2025年重庆大学实验室及设备管理处劳务派遣工作人员招聘备考题库及一套答案详解
- 2025年梧州市龙投人力资源有限公司招聘备考题库带答案详解
- 高中生对机器人辅助物理实验的参与度研究课题报告教学研究课题报告
- 2025年昆明市盘龙区汇承中学招聘教师备考题库完整参考答案详解
- 2025年北京市朝阳区三环肿瘤医院招聘21人备考题库完整答案详解
- 2025年关于为山东省人民检察院公开招聘聘用制书记员的备考题库及答案详解参考
- 2025年西湖大学Vita编辑部招聘工作人员备考题库带答案详解
- 2025年云南开放大学第二批公开招聘人员备考题库有答案详解
- 2025年江苏盐城港控股集团有限公司招聘21人备考题库及完整答案详解一套
- 上海财经大学2026年辅导员及其他非教学科研岗位人员招聘备考题库带答案详解
- 2026湖北恩施州建始县教育局所属事业单位专项招聘高中教师28人备考笔试试题及答案解析
- 心肺康复课件
- 2025中原农业保险股份有限公司招聘67人笔试参考题库附带答案详解(3卷)
- 2026年内蒙古商贸职业学院单招职业技能测试题库及参考答案详解一套
- 退赃后赔偿协议书
- 骶部炎性窦道的护理
- 多元催化体系下羊毛脂转酯化制备胆固醇的工艺解析与效能探究
- 家庭农场的商业计划书(6篇)
- 高处安全作业培训
- 2023-2024学年北京市通州区数学九年级第一学期期末综合测试试题含解析
评论
0/150
提交评论