实验报告二(上机实验作业二)
题目:流水灯控制。
内容:1. 把八个发光led的正极经电阻接至p2口,led的负极接地;
2. 把三个按钮开关的一端分别接至p3.7、p3.6、p3.5端口,另一端接地;
3. 编程实现控制,按一下模式键改变流水方式、按增减键改变流水的速度。
例题1:试编写控制使p2口连接的8个接地的发光led灯每隔200ms轮流点亮一个的子程序。
设fosc=6mhz,要求画出流程图。
算法步骤:第1步点亮第一个led
第2步延时200ms开始。
第3步判别是第八个led则转到第1步。
第4步点亮下一个ledt': span', c': k', r': r_6'},
第5步转到第2步
进一步细化: [
第1步 1.1 k00000001b
1.2 p2kt': span', c': 延时', r': r_7'},
第2步 2.1 延时200ms
第3步 3.1 判别(k=10000000b)则转到第一步y k=80h
第4步 4.1 k左移一位n
4.2 p2kt': span', c': k', r': r_6'},
第5步 5.1 转到第2.1步。
程序: [k equ 20h
org 0000h
m1: mov k, #01h ; 00000001b
mov p2, k
m2: lcall delay200
jbk.7, m1 ; 判k=10000000b
mov a, k ; k左移1位。
rlamov k, a
mov p2, a
sjmp m2
delay200: mov r1, #200 ; 延时200ms
de1: mov r2, #
de2: djnz r2, de2 ; 4μs *250=1ms
djnz r1, de1
retend
例题2:试编写控制程序使p2口连接的8个接地的发光led灯逐个循环点亮的程序,mcu连接一个按键,每按一下可以改变逐个点亮led灯的速度(比如:从50~250ms,每次加50ms)。
设fosc=6mhz.
算法步骤:第1步点亮第一个led
第2步延时200ms开始。
第3步判别是第八个led则转到第1步。
第4步点亮下一个ledt': span', c': k', r': r_5'},
第5步转到第2步
进一步细化t': span', c': p2', r': r_5'},
第1步 1.1 k00000001b
1.2 p2kt': span', c': 延时', r': r_6'},
第2步 2.1 延时tms
2.2 判别按键按下?n, 转到3.1键按下 y [,
2.3 延时tt+50msn
第3步 3.1 判别(k=10000000b)则转到1.1y k=80h
第4步 4.1 k左移一位n
4.2 p2kt': span', c': k', r': r_3'},
第5步 5.1 转到第2.1步。
程序: [k equ 20h
t equ 21h
org 0000h
mov t, #
m1: mov k, #01h ; 00000001b
mov p2, k
m2: lcall delay200
setb p3.6
jbp3.6, m3 ; 无键按下。
mov a, #50 ; 有键按下。
add a, ttt+50ms
mov t, a
m3: jbk.7, m1 ; 判k=10000000b
mov a, k ; k左移1位。
rlamov k, a
mov p2, a
sjmp m2
delay200: mov r1, t ; 延时tms
de1: mov r2, #
de2: djnz r2, de2 ; 4μs *250=1ms
djnz r1, de1
retend
例题3:在题目1的基础上,mcu连接一个按钮到p3.7,每按一下可以改变led灯轮流点亮的方式。
(比如:从左到右、从右到左、左右来回、左右同时交叉)。设fosc=6mhz,要求画出流程图。
算法步骤:第1步判别s≠0转到第4步主程序。
第2步调用显示方式0
第3步转到第1步nnn
第4步判别s≠1转到第7步s=0s=1s=2
第5步调用显示方式1yyy
第6步转到第1步显示方式0 显示方式1 显示方式2
第7步判别s≠2转到第1步。
第8步调用显示方式2
第9步转到第1步。
显示方式的算法步骤:
第1步点亮第一个led
第2步延时200ms显示方式0
第3步判别是第八个led则返回主程序。
第4步点亮下一个ledt': span', c': k', r': r_7'},
第5步转到第2步
进一步细化t': span', c': p2', r': r_7'},
第1步 1.1 k00000001b
1.2 p2kt': span', c': 延时', r': r_8'},
第2步 2.1 延时tms
2.2 判别按键按下?n, 转到2.4键按下 y [,
2.3 tt+50msn
2.4 判别按键按下?n, 转到3.1
2.5 s s+1键按下 y [,
2.6 判别s=3?n, 转到3.1nn
2.7 s 0y k=80h s=3
2.8 返回主程序y
第3步 3.1 判别(k=10000000b)则转到2.8ret [,
第4步 4.1 k左移一位。
4.2 p2kt': span', c': p2', r': r_8'},
第5步 5.1 转到第2.1步。
ret程序调试方法:
第一步:输入例题1的程序,编译无误后,运行程序进行调试,直至得到正确的结果:从上到下轮流点亮led灯。
第二步:在例题1程序调试正确后,插入例题2的指令(红色的指令),编译无误后,运行程序进行调试,直至得到正确的结果:
从上到下轮流点亮led灯,当按下按钮时,显示的速度要会变化。
数值方法上机作业
1 列主元素消去法求解线性方程 include include define n 20 using namespace std void load float a n n int m int main 将列最大数防在对角线上 for p 0 p cout cout for k i 1 k l k i...
计算方法上机作业
计算方法上机报告。姓名 学号 班级 上课班级 1 算法思想。2 算法结构。3 matlab源程序。clear 清除工作空间变量。clc 清除命令窗口命令。m input 请输入有效数字的位数m输入有效数字的位数。s 0for n 0 50 t 1 16 n 4 8 n 1 2 8 n 4 1 8 n...
计算方法上机作业
表2 新算法迭代结果1 初值 0,精度ep 初始选择因子p 修正因子 0.1,最大迭代次数n 0,局部修正次数m分别取1,2,3次,f 49881192646492934000000000000.000000 表3 新算法迭代法结果2 初值 0,精度ep 初始选择因子p 修正因子 0.05,最大迭代...