6 3 2 0 ORG 0000 H 02

  • Slides: 62
Download presentation

参考程序: 6. 3. 2 方式 0及应用实例 地址 机器码 程序 ORG 0000 H 02 00

参考程序: 6. 3. 2 方式 0及应用实例 地址 机器码 程序 ORG 0000 H 02 00 50 LJMP MAIN: 注释 0000 H MAIN ORG 0050 H SETB P 1. 0 0050 H D 2 90 0052 H 75 89 00 MOV TMOD, #00 H ; 置定时器 1为 作方式 0 0055 H 75 8 D F 1 MOV TH 1, #0 F 0 H ; 置 500 s定时初值 0058 H 75 8 B 0 C MOV TL 1, #0 CH 005 BH D 2 8 E 005 DH 10 8 F 0060 H 80 FB 0062 H 75 8 D F 1 0065 H 75 8 B 0 C 0068 H B 2 006 AH 80 SETB 02 LP 1: JBC SJMP LP 2: TR 1 TF 1, LP 2 LP 1 ; 置P 1. 0初始状态 ; 启动定时器 1 ; 查询计数溢出 ; 未到 500 s继续计数 MOV TH 1, #0 F 0 H ; 重新置 500 s定时初值 MOV TL 1, #0 CH 90 CPL P 1. 0 ; 输出取反 E 4 SJMP LP 1 ; 重复循环 END http: //www. wenyuan. com. cn/webnew/

主程序: ORG 0000 H 21 50 0000 H AJMP MAIN: MAIN ORG 0150 H

主程序: ORG 0000 H 21 50 0000 H AJMP MAIN: MAIN ORG 0150 H MOV R 2, #06 H MOV A, #0 FCH MOV P 1, A 0150 H 7 A 06 0152 H 74 FC 0154 H F 5 90 0156 H 51 00 0158 H 23 0159 H DA F 9 DJNZ 015 BH 7 A 06 MOV R 2, #06 H 015 DH F 5 90 MOV P 1, A 015 FH 03 0160 H 51 00 ACALL 0162 H DA F 9 DJNZ R 2, NEXT 1 0164 H 80 EA SJMP MAIN NEXT: ACALL RL NEXT 1: ; 灯点亮的初始状态 DELAY A ; 点亮左边一盏灯 RR R 2, NEXT A ; 点亮右边一盏灯 DELAY http: //www. wenyuan. com. cn/webnew/

延时子程序: DELAY: ORG 0200 H MOV R 1, #200 ; 置 5 ms计数循环初值 0200

延时子程序: DELAY: ORG 0200 H MOV R 1, #200 ; 置 5 ms计数循环初值 0200 H 79 C 8 0202 H 75 89 00 MOV TMOD, #00 H ; 置定时器 0为 作方式 0 0205 H 75 8 C B 1 MOV TH 0, #0 B 1 H ; 置 5 ms定时初值 0208 H 75 8 A 1 C MOV TL 0, #1 CH 020 BH D 2 8 C 020 DH 10 8 D 0210 H 80 FB 0212 H 75 8 C B 1 0215 H 75 8 A 1 C 0218 H D 9 F 3 021 AH 22 SETB 02 LP 1: JBC SJMP LP 2: TR 0 TF 0, LP 2 LP 1 MOV THO, #0 B 1 H MOV TL 0, #1 CH DJNZ R 1, LP 1 RET ; 启动定时器 1 ; 查询计数溢出 ; 未到 5 ms继续计数 ; 重新置 5 ms定时初值 ; 未到 1 s继续循环 ; 返回主程序 END http: //www. wenyuan. com. cn/webnew/

参考程序: 主程序: ORG 0000 H 02 00 50 LJMP ORG 000 BH 02 02

参考程序: 主程序: ORG 0000 H 02 00 50 LJMP ORG 000 BH 02 02 0030 H D 2 90 0032 H 75 20 0035 H 78 64 0037 H 75 89 003 AH 75 003 DH 00 LJMP MAIN: 0000 H MAIN 000 BH SER 0 ORG 0030 H SETB P 1. 1 ; 定� 器 0的中断入口地址 ; 指向中断服� 程序 ; 置P 1. 1初始状� MOV 20 H, #00 H ; 20 H� 元清0 MOV R 0, #64 H ; � 件� 数 100次 00 MOV TMOD, #00 H ; 置定� 器 0� 作方式 0 8 C 63 MOV TH 0, #63 H ; 置 10 ms定� 初� 75 8 A 18 MOV TL 0, #18 H 0040 H D 2 AF SETB EA 0042 H D 2 A 9 SETB ET 0 0044 H D 2 8 C SETB TR 0 0046 H 80 FE SJMP $ 00 http: //www. wenyuan. com. cn/webnew/

参考程序: 中断服务程序: ORG 0000 H 02 00 50 LJMP ORG SER 0:MOV 0000 H

参考程序: 中断服务程序: ORG 0000 H 02 00 50 LJMP ORG SER 0:MOV 0000 H MAIN 0100 H 75 8 C 63 0103 H 75 8 A 18 0106 H D 8 04 DJNZ 0108 H B 2 91 CPL P 1. 1 010 AH 05 20 INC R 0 010 CH 32 MOV TH 0, #63 H ; 重新置 10 ms定� 初� TL 0, #18 H R 0, EXIT ; 未到 1 s��� 数 EXIT: RETI END http: //www. wenyuan. com. cn/webnew/

参考程序: ORG 0000 H 02 00 50 LJMP 0000 H ORG MAIN 0050 H

参考程序: ORG 0000 H 02 00 50 LJMP 0000 H ORG MAIN 0050 H 75 40 00 MAIN: MOV 40 H, #00 H 0053 H 75 41 00 MOV 41 H, #00 H 0056 H 75 42 00 MOV 42 H, #00 H 0059 H 75 89 90 MOV TMOD, #90 H ; 置定时器 1为 作方式 1 005 CH 75 8 D 00 MOV TH 1, #00 H ; 定时初值清0 005 FH 75 8 B 00 MOV TL 1, #00 H 0062 H 20 B 3 FD JB 0065 H D 2 8 E 0067 H 30 B 3 SETB P 3. 3, $ FD JNB TR 1 P 3. 3, $ ; 数据存储单元清0 ; 查询低电平 ; 准备启动定时器 1 ; 高电平到, 启动定时器 1 http: //www. wenyuan. com. cn/webnew/

参考程序: 006 AH 10 8 F 05 006 DH 20 B 3 FA 0070

参考程序: 006 AH 10 8 F 05 006 DH 20 B 3 FA 0070 H 80 04 0072 H 05 40 0074 H 80 F 4 0076 H C 2 8 E 0078 H 85 8 D 41 007 BH 85 8 B 007 EH 12 01 0081 H 80 DD LP 1: JBC JB TF 1, LP 2 P 3. 3, LP 1 SJMP LP 2: INC LP 3 40 H SJMP LP 3: CLR ; 低电平到, 停止定时器 1 ; 存储区最高位加 1 LP 1 TR 1 ; 停止定时器 1 MOV 41 H, TH 1 ; 计数值高 8位放入存储区 42 MOV 42 H, TL 1 ; 计数值低8位放入存储区 00 LCALL SJMP ORG DIS: (略) DIS MAIN ; 调用显示子程序 ; 重复循环 0100 H ; 显示子程序 END http: //www. wenyuan. com. cn/webnew/

参考程序:主程序 0000 H 02 00 30 001 BH 02 01 50 0030 H 0033

参考程序:主程序 0000 H 02 00 30 001 BH 02 01 50 0030 H 0033 H 0036 H 0039 H 003 CH 003 EH 0041 H 0042 H 0043 H 0045 H 0047 H 0048 H 0049 H 004 AH 004 CH 004 EH 0050 H 75 75 E 5 90 93 F 9 60 54 FA E 9 C 4 54 70 C 2 80 81 89 A 8 40 40 02 2 B 0 F 0 F 04 8 E 17 30 10 88 00 00 ORG 0000 H LJMP MAIN ORG 001 BH LJMP INT 1 ORG 0030 H MAIN:MOV SP, #30 H MOV TMOD, #10 H ; 设T 1 作方式 1 MOV IE, #88 H ; 允许中断 LOOP 1:MOV 40 H, #00 H ; 简谱码指针清0 LOOP 2:MOV A, 40 H ; 简谱码指针放入A MOV DPTR, #TABLE 1 MOVC A, @A+DPTR ; 到表格TABLE 1中取简谱码 MOV R 1, A ; 取到的简谱码暂存于R 1 JZ FINISH ; 简谱码是 00 H(结束码), 转移 ANL A, #0 FH ; 不是 00 H, 取低4位(节拍码) MOV R 2, A ; 将节拍码存入R 2中 MOV A, R 1 ; 将取到的简谱码再放入A SWAP A ; 高低4位交换 ANL A, #0 FH ; 取低4位(唱名码) JNZ SING ; 唱名码不是 00 H, 转移 CLR TR 1 ; 唱名码是 00 H, 则不发音 SJMP WY ; 转移至WY http: //www. wenyuan. com. cn/webnew/

0052 H 0053 H 0055 H 0056 H 0059 H 005 AH 005 CH

0052 H 0053 H 0055 H 0056 H 0059 H 005 AH 005 CH 005 EH 0060 H 0061 H 0062 H 0063 H 0065 H 0067 H 0069 H 006 CH 006 EH 0070 H 0072 H 参考程序:主程序 14 F 5 50 23 90 02 50 93 F 5 8 D F 5 51 E 5 50 23 04 93 F 5 D 2 12 05 80 C 2 80 8 B 52 8 E 01 00 40 CC 8 E C 5 SING:DEC A MOV 50 H, A RL A MOV DPTR, #TABLE 2 MOVC A, @A+DPTR MOV TH 1, A MOV 51 H, A MOV A, 50 H RL A INC A MOVC A, @A+DPTR ; 唱名码减 1 ; 唱名码存入 50 H ; 乘 2 ; 到表格TABLE 2取计数值高 8位 ; 计数值高 8位存入TH 1 ; 计数值高 8位存入 51 H ; 将取到的唱名码再放入A ; 乘 2 ; 唱名码加 1 ; 到表格TABLE 2取计数值低8位 MOV TL 1, A ; 计数值低8位存入TL 1 MOV 52 H, A ; 计数值低8位存入 52 H SETB TR 1 ; 启动T 1 WY: LCALL DELAY ; 调用基本单位时间(1/4拍) INC 40 H ; 简谱码指针加 1 SJMP LOOP 2 ; 取下一个简谱码 FINISH: CLR TR 1 ; 停止T 1 SJMP LOOP 1 ; 重复播放 http: //www. wenyuan. com. cn/webnew/

参考程序:延时子程序 ORG DELAY: MOV 0100 H ; 基本单位时间子程序(1/4拍) R 4, #200 ; 延时 187

参考程序:延时子程序 ORG DELAY: MOV 0100 H ; 基本单位时间子程序(1/4拍) R 4, #200 ; 延时 187 ms的循环次数 0100 H 7 C C 8 0102 H 7 D E 9 LP 1: MOV 0104 H DD FE DJNZ R 5, $ 0106 H DC FA DJNZ R 4, LP 1 0108 H DA F 6 DJNZ R 2, DELAY 010 AH 22 RET ORG R 5, #232 ; 延时 0. 935 ms的循环次数 ; 节拍数未到, 转移 0150 H C 0 E 0 INT 1: PUSH ACC 0152 H C 0 D 0 PUSH 0154 H 85 52 8 B MOV TL 1, 52 H 0157 H 85 51 8 D MOV TH 1, 51 H 015 AH B 2 90 CPL P 1. 0 ; 将P 1. 0取反 015 CH D 0 POP PSW ; 至堆栈取回PSW值 015 EH D 0 E 0 POP ACC ; 至堆栈取回A值 0160 H 32 PSW ; 将A的值暂存于堆栈 ; 将PSW的值暂存于堆栈 ; 重置定时器初值 RETI ; 返回主程序 http: //www. wenyuan. com. cn/webnew/

0200 H 0205 H 0208 H 020 DH 0210 H 0215 H 0218 H

0200 H 0205 H 0208 H 020 DH 0210 H 0215 H 0218 H 021 DH 0220 H 0225 H 0228 H 022 DH 0230 H 0235 H 0238 H 023 DH 0240 H 参考程序:简谱码表 ORG 0200 H TABLE 1: DB DB DB 82 H, 01 H, 81 H, 94 H, 84 H 0 B 4 H, 0 A 4 H, 04 H 82 H, 01 H, 81 H, 94 H, 84 H 0 C 4 H, 0 B 4 H, 04 H 82 H, 01 H, 81 H, 0 F 4 H, 0 D 4 H 0 B 4 H, 0 A 4 H, 94 H 0 E 2 H, 01 H, 0 E 1 H, 0 D 4 H, 0 B 4 H 0 C 4 H, 0 B 4 H, 04 H 82 H, 01 H, 81 H, 94 H, 84 H DB DB 0 B 4 H, 0 A 4 H, 04 H 82 H, 01 H, 81 H, 94 H, 84 H 0 C 4 H, 0 B 4 H, 04 H 82 H, 01 H, 81 H, 0 F 4 H, 0 D 4 H 0 B 4 H, 0 A 4 H, 94 H 0 E 2 H, 01 H, 0 E 1 H, 0 D 4 H, 0 B 4 H 0 C 4 H, 0 B 4 H, 04 H 00 H ; 简谱码表 http: //www. wenyuan. com. cn/webnew/

参考程序:唱名码表 ORG 0250 H TABLE 2: DW FD 82 H, FDC 8 H, FE

参考程序:唱名码表 ORG 0250 H TABLE 2: DW FD 82 H, FDC 8 H, FE 06 H 0256 H DW FE 22 H, FE 56 H, FE 85 H 025 CH DW FE 9 AH, FEB 2 H, FEE 4 H 0262 H DW FF 03 H, FF 11 H, FF 2 BH 0268 H DW FF 42 H, FF 4 DH, FF 61 H END ; 唱名码表 ; 程序结束 http: //www. wenyuan. com. cn/webnew/

主程序: 6. 3. 4 方式 2及应用实例 ORG 0000 H 02 00 30 LJMP ORG

主程序: 6. 3. 4 方式 2及应用实例 ORG 0000 H 02 00 30 LJMP ORG 000 BH 02 00 50 LJMP ORG MAIN:SETB 0000 H MAIN 000 BH ; 定时器 0的中断入口地址 INT 0 0030 H D 2 91 P 1. 1 ; 设置P 1. 1初始状态 0032 H 7 A 02 MOV R 2, #02 H ; 给R 2赋高电平计数值 0034 H 75 89 02 MOV TMOD, #02 H ; 定时器 0 作方式 2 0037 H 75 8 C 9 C MOV TH 0, #9 CH ; 置 200 s定时初值 003 AH 75 8 A 9 C MOV TL 0, #9 CH 003 DH D 2 AF SETB EA 003 FH D 2 A 9 SETB ET 0 0041 H D 2 8 C SETB TR 0 0043 H 80 FE SJMP $ ; 动态暂停 http: //www. wenyuan. com. cn/webnew/

定时器 0中断服务程序: ORG 0050 H 6. 3. 4 方式 2及应用实例 0050 H DA 0

定时器 0中断服务程序: ORG 0050 H 6. 3. 4 方式 2及应用实例 0050 H DA 0 B 0052 H B 2 91 CPL P 1. 1 ; P 1. 1取反 0054 H 30 91 04 JNB P 1. 1, L 1 ; 判断P 1. 1电平高低 7 A 02 MOV R 2, #02 H ; 若P 1. 1=1, 给R 2赋高电平计数 值 80 02 SJMP 0057 H 0059 H 005 BH 005 DH 7 A 04 32 INT 0:DJNZ L 1:MOV R 2, EXIT R 2, #03 H ; 若P 1. 1=0, 给R 2赋低电平计数 值 EXIT:RETI END 矩形波的波形图 http: //www. wenyuan. com. cn/webnew/

0000 H 000 BH 参考程序: ORG 02 00 50 LJMP ORG 02 02 00

0000 H 000 BH 参考程序: ORG 02 00 50 LJMP ORG 02 02 00 LJMP ORG MAIN: MOV 0000 H MAIN 000 BH SER 0 ; 定时器 0的中断入口地址 ; 转向中断服务程序 0050 H 78 00 0052 H 75 89 06 MOV TMOD, #06 H ; 置计数器 0为 作方式 2 0055 H 75 8 C F 6 MOV TH 0, #0 F 6 H ; 置 10次计数初值 0058 H 75 8 A F 6 MOV TL 0, #0 F 6 H 005 BH D 2 AF SETB EA 005 DH D 2 A 9 SETB ET 0 005 FH D 2 8 C SETB TR 0 0061 H 80 FE SJMP $ ORG 0200 H 08 0201 H 32 SER 0: INC R 0, #00 H 0200 H R 0 ; 中断服务程序 RETI END http: //www. wenyuan. com. cn/webnew/

0000 H 参考程序: 01 50 000 BH 21 00 0050 H 0053 H 0056

0000 H 参考程序: 01 50 000 BH 21 00 0050 H 0053 H 0056 H 0058 H 005 AH 005 CH 005 EH 0060 H 0062 H 75 75 75 D 2 D 2 74 F 5 80 89 8 C 8 A AF A 9 8 C FE 90 FE 0100 H 0101 H 0103 H 23 F 5 32 90 06 FF FF ORG 0000 H AJMP MAIN ORG 000 BH AJMP INT ORG 0050 H MAIN: MOV TMOD, #06 H MOV TH 0, #0 FFH MOV TL 0, #0 FFH SETB EA SETB ET 0 SETB TR 0 MOV A, #0 FEH MOV P 1, A SJMP $ ORG 0100 H INT: RL A MOV P 1, A RETI END ; 定� 器 0的中断入口地址 ; � 向中断服� 程序 ; 置� 数器 0� 作方式 2 ; 中断服� 程序 http: //www. wenyuan. com. cn/webnew/

6. 3. 5 方式 3 定时器/计数器 0方式 3逻辑结构 C/T http: //www. wenyuan. com. cn/webnew/

6. 3. 5 方式 3 定时器/计数器 0方式 3逻辑结构 C/T http: //www. wenyuan. com. cn/webnew/

C/T 6. 3. 5 方式 3 C/T 定时 器/ 计数 器 0 方式 3下

C/T 6. 3. 5 方式 3 C/T 定时 器/ 计数 器 0 方式 3下 的T 1 逻辑 结构 C/T C/T http: //www. wenyuan. com. cn/webnew/

Q & A? Thanks! http: //www. wenyuan. com. cn/webnew/

Q & A? Thanks! http: //www. wenyuan. com. cn/webnew/