编程日记.docx

上传人:b****5 文档编号:2858766 上传时间:2022-11-16 格式:DOCX 页数:42 大小:333.36KB
下载 相关 举报
编程日记.docx_第1页
第1页 / 共42页
编程日记.docx_第2页
第2页 / 共42页
编程日记.docx_第3页
第3页 / 共42页
编程日记.docx_第4页
第4页 / 共42页
编程日记.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

编程日记.docx

《编程日记.docx》由会员分享,可在线阅读,更多相关《编程日记.docx(42页珍藏版)》请在冰豆网上搜索。

编程日记.docx

编程日记

前两天下载了PROTEUS软件,今天试着用了一下它的MCU仿真模块,同时,我在kell中谁手写了一个流水灯程序,结果啊,太令我失望了,就几行代码啊,大哥,自己都要搞错,

程序是严谨的东西,以后在编程方面要多加注意了。

ORG0000H

LJMPMAIN

ORG30H

MAIN:

clrc

mova,0feh------------------缺少一个#符号

A1:

MOVP1,A

lcalldelay

RrA

AJMPA1

DELAY:

MOVR7,#239

D1:

MOVR6,#239

D2:

DJNZR6,$

DJNZR7,D1

RET

END

Wednesday,July01,2009

继续玩proteus

做了一个定时器,然后在定时器的基础上通过自己思考,设计了一个交通灯

ORG0000H

AJMPMAIN

ORG30H

MAIN:

LOOP:

MOVP1,#21H

CALLDELAY

CALLDELAY

MOVP1,#11H

ACALLDELAY

MOVP1,#0CH

CALLDELAY

CALLDELAY

MOVP1,#0AH

CALLDELAY

AJMPLOOP

DELAY:

MOVR7,#250

D1:

MOVR6,#250

D2:

DJNZR6,D2

DJNZR7,D1

RET

END

简单易行。

在然后编写了两个有关计数器和中断使用的程序,其中对外部中断程序有特别了解,当有外部中断引入时,只能控制一个引脚的变化。

2今天刚看了一个关于串口通讯的程序,没想到,太没有想到了,竟然书上的内容还有错的,怎么调试都调试不出来。

后来想了一下自己写了一个关于串口通讯的程序。

但是实验的时候LED灯却乱跳,即使单步运行还是不能正确显示预期的结果。

开始还以为程序有问题,是自己没有能充分理解串口的使用,但是后来在源程序中加了个延迟程序,则实验成功。

ORG00H

LJMPMAIN

ORG30H

MAIN:

MOVSCON,#00H

MOVA,#80H

A1:

MOVSBUF,A

D1:

JNBTI,D1

RRA

CLRTI

ACALLDELAY

LJMPA1

DELAY:

MOVR0,#250

A3:

MOVR3,#250

A2:

DJNZR3,A2

DJNZR0,A3

RET

END

串口有点重要同时理解起来也有点困难,在网上下载了一个虚拟串口软件,成功做成了一个用串口发送接收数据的实验,有点点hai

原理图如下,实现的功能是串口4发送数据,串口3接受数据

此处的P1是串口3,串口4由串口调试软件给出

最后串口显示

用VT1的时候一定要记得打开VT1显示串口,要不是你一定看不到收到得结果。

我调试这个实验的时候一会成功一会不成功,起初还以为是电脑程序有问题,最后终于找到原因,就是没有打开虚拟终端窗口。

 

用了两天时间做了一个两个单片机的相互通信,起初是自己写程序,可是在PROTUES中不能正确仿真,后来借鉴别人的两个单片机通讯的程序,与自己的程序比较,程序很相近。

我该过去该过来,还是实现不了预期的目标,实在没有办法,我就照着别人的程序,一条一条的该自己的程序,结果还是不行,最后也没有发现到底是那一块出了问题。

也可能是有条语句错了吧,由于自己的粗心大意检查了好几遍都没有检查出来,以后对于写程序一定要小心了在小心。

必须先理解然后在敲进电脑。

也值得高兴,最后还是做出来了。

 

今天用proutes又成功的做了一个关于LCD显示的实验。

功夫不负有心人啊,说心里话,一开始接触单片机的时候就非常关注按键和显示那一部分内容,进行人机互动,觉得有意思。

起初点亮数数码管,叫数码管能按照自己想的数字显示数,后来就很想点亮LCD,可是看了不少的资料还是不很明白,反而感觉更加的糊涂了,不过我一直坚持一句话:

对于学习东西,看得懂的内容要多看,看不懂的内容要反复看,硬着头皮看,硬着头皮看。

现在终于点亮了,也算是小有成绩吧,鼓励一下自己。

不过要学的东西还很多,现在仅仅刚起步。

起初在proteus中把图连接好,把程序写好,按下仿真键,不能正常运行,还以为是程序有问题,或是连接图片有了问题,然后一一检查都没有错,郁闷啊,又像以前调试其他程序一样,进入了死循环,心里有点急,害怕又是面临调试一个程序花掉两三天的时间,(面对这样的问题真的很苦啊,第一次写程序,不能客观的肯定程序的正确性,在这种时候才体会到老师的重要作用)。

最后我改了一下,89c51的时钟频率,改的很低只有1mHZ,在仿真成功了。

以下是LCD显示程序

 

ORG00H

RSEQUP3.3;寄存器选择信号

RWEQUP3.4;读/写控制信号

EEQUP3.5;使能信号

COMEQU20H;命令字暂存单元

CLRRS

CLRRW

MOVP1,#30H;向LCD写入3条30H指令,使之复位

MOVR7,#03H

INT:

SETBE;使E产生下降沿

CLRE

CALLDELAY;延时大于4.1ms

DJNZR7,INT

MOVP1,#38H;工作方式设置命令字设置8位数据总线58点阵

SETBE;使E产生下降沿

CLRE

MOVCOM,#01H;清屏指令01H

CALLPR1;调向LCD写指令子程序

MOVCOM,#06H;设置输入方式命令字AC加1计数光标右移1个字符

CALLPR1

MOVCOM,#00001111B;显示开关控制命令字开显示光标显示闪烁

CALLPR1

MOVR6,#16;R6作字符计数器

MOVDPTR,#DATA1

MOVR4,#0

DISPLY:

CALLF_BUSY;调判忙子程序

MOVA,R4

MOVCA,@A+DPTR;取数

SETBRS;以下5条指令为向LCD写数

CLRRW

MOVP1,A

SETBE

CLRE

ACALLDELAY

INCR4

CJNER4,#0FH,NEXT;不到显示位置9转

MOVCOM,#0C0H;设置地址40H至AC,调整显示位置为9

CALLPR1

NEXT:

DJNZR6,DISPLY

SJMP$

PR1:

CALLF_BUSY;写指令子程序

CLRRW

MOVP1,COM

SETBE

CLRE

RET

F_BUSY:

CLRRS;判忙子程序

SETBRW

F_BY1:

MOVP1,#0FFH

SETBE

MOVA,P1

CLRE

JBACC.7,F_BY1;忙转

RET

DELAY:

MOVR0,#8H;延时子程序

DLY0:

MOVR1,#0C8H

DLY1:

DJNZR1,DLY1

DJNZR0,DLY0

RET

DATA1:

DB'CHENHAOGOOD'

END

会做矩阵式的按键,还以为独立式的按键很简单,就不用在做实验了,没想到,真失败啊。

今天无意间想做来耍一下,做一个独立式的按键实验,要求是,按下按键,当松开按键以后,指示灯亮,过一会指示灯又自动熄灭。

真以为很简单,结果动起手来就眼高手低了。

弄了小半天最后终于弄好了,通过这个实验给我启示一点,延时的设计很重要,不能谁便得选择延时,必须得经过计算。

因为单片机处理的时序是微妙级别的,而写的延时程序多加一个1或者多加一个循环说不好就让单片机多运行几天。

ORG00H

MAI:

JNBP1.0,A0

JNBP1.1,A1

LJMPMAI

A0:

ACALLDELAY

JNBP1.0,B0

LJMPMAI

B0:

JNBP1.0,B0

CLRP2.0

MOVR1,#100

C0:

ACALLDELAY

DJNZR1,C0

SETBP2.0

ljmpMAI

A1:

ACALLDELAY

JNBP1.1,B1

LJMPMAI

B1:

JNBP1.1,B1

CLRP2.1

MOVR1,#100

C1:

ACALLDELAY

DJNZR1,C1

SETBP2.1

LJMPMAI

DELAY:

MOVR6,#20;延时10ms子程序

L1:

MOVR7,#248

DJNZR7,$

DJNZR6,L1

RET

END

难得啊。

今天我终于LED点阵弄好了,又花了两三个小时,不过做成功了。

目的让8*8的LED点阵显示:

年:

在起初正确分辨出来了LED的行线和列线后。

然后就写显示年字的程序。

那个程序是在网上下载的。

编译没有问题。

最后我加载实验,结果竟然不行。

我还以为是把行列线弄错了。

我有仔细检查了一遍,没有问题,在仔细看一下,LED连线旁边的高低电平又是正确显示的。

然后我就想到是不是延迟那一块有问题。

改了延迟,可是还是不行。

最后我无意间该了两条相邻的指令的顺序。

结果就完成实验了。

ORG0H

START:

MOVDPTR,#DATA1;指向点阵代码首址

MOVR2,#11111110b;80H使第7列最左一列阴极为低电平

MOVR3,#08H

DISP:

mova,#0

MOVCA,@A+DPTR;取一列点阵代码

MOVP1,R2;使一列阴极为低电平

MOVP2,a;加至阳极就是交换了这两条指令

INCDPTR;指向下一列代码

MOVA,R2;R2右移一位为下一列阴极输出低电平作准备

RlA

MOVR2,A

acalldelay

DJNZR3,DISP;8列未完,转

AJMPSTART

DELAY:

MOVR6,#20;延时10ms子程序

L1:

MOVR7,#10

DJNZR7,$

DJNZR6,L1

RET

DATA1:

DB24H,44H,0DCH,54H,7FH,54H,54H,44H;年的点阵代码

END

2009年8月15日星期六

 

一键多功能识别

目的。

按一下按键,一个LED等闪烁,再按一下按键下一个LED等闪烁

程序如下

IDEQU30H

K1BITP3.7

L1BITP1.0

L2BITP1.1

L3BITP1.2

L4BITP1.3

ORG00H

MOVID,#00H

START:

JBK1,REL

CALLDELAY10MS

JBK1,REL

INCID

MOVA,ID

CJNEA,#04H,REL

MOVID,#00H

REL:

JNBK1,$

MOVA,ID

CJNEA,#00H,IS0

CPLL1

LCALLDELAY

LCALLDELAY

SETBL1

LCALLDELAY

LCALLDELAY

SJMPSTART

IS0:

CJNEA,#01H,IS1

CPLL2

CALLDELAY

LCALLDELAY

SETBL

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1