您的位置 首页 模拟

51单片机汇编语言(五)

定时器计数器功能说明:开始时接在单片机P1端口中的P17亮,用定时器延时60ms后P16亮,如此向右移动,移到最右端P10亮后,又回到最左端重

守时器 计数器

功用阐明:

开端时接在单片机P1端口中的P1.7亮,用守时器延时60ms后P1.6亮,如此向右移动,移到最右端P1.0亮后,又回到最左端从头开端向右移动,不断循环。

程序:DS01.ASM

01: START: MOV R0, #8 ;设右移8次

02: MOV A, #01111111B ;存入开端点亮灯方位

03: LOOP: MOV P1, A ;传送到P1并输出

04: ACALL DELAY ;调延时子程序

05: RR A ;右移一位

06: DJNZ R0, LOOP ;判别移动次数

07: JMP START ;从头设定显现值 主程序

08: DELAY: MOV TMOD,#00000001B; 设定TO作业在MODE1

09: SETB TR0 ; 发动TO开端计时

10: MOV TL0,#LOW(65536-60000) ; 装入低位

11: MOV TH0,#HIGH(65536-60000); 装入高位

12: JNB TF0,$ ; T0没有溢出等候

13: CLR TF0 ; 发生溢出,清标志位 守时延时

14: RET ; 子程序回来 子程序

15: END ; 程序完毕

功用阐明:

开端时P1.0亮,延时10秒后,左移至P1.1亮,如此左移到第6个灯(P1.5)亮后,再从头开端向左移动,1分钟循环一次。

程序:DS02.ASM

01: START: MOV R0, #6 ;设左移6次

02: MOV A, #11111110B ;存入开端点亮灯方位

03: LOOP: MOV P1, A ;传送到P1并输出

04: ACALL DELAY ;调延时子程序

05: RL A ;左移一位

06: DJNZ R0, LOOP ;判别移动次数

07: JMP START ;从头设定显现值 主程序

08:DELAY: MOV R1,#200 ;设置软件计数初值

09: MOV TMOD,#00000001B; 设定TO作业在MODE1

10: SETB TR0 ; 发动TO开端计时

11: AGAIN: MOV TL0,#LOW(65536-50000) ; 装入低位

12: MOV TH0,#HIGH(65536-50000); 装入高位

13: LOOP1: JBC TF0,LOOP2 ;TF0是1转移至LOOP2并清0

14: JMP LOOP1

15:LOOP2: DJNZ R1,AGAIN ;R1不是0,则转移至AGAIN (守时加软

16: CLR TR0 ;是,则中止T0计时 件计数)

17: RET ; 子程序回来 延时子程序

18: END ; 程序完毕

功用阐明:选用两个守时器合用,T0设置为守时方法,T1设置为计数方法。T0守时时刻为50ms,计满发生的输出信号由P1.7口发光二极管显现。一起还将该信号输入到计数器T1(P3.5脚)作为T1的计数输入脉冲,当输入信号发生由1到0的跳变时触发计数器作业,使计数器的值增1。计数器T1的初始值设置为100,计满时所用的时刻为50ms×2×100,即10s。并由P1.0端口发光二极管来显现,所以P1.0端口的灯每10s点亮或平息一次。

程序:DS03.ASM

01: ORG 0000H ; 开端地址

02: JMP MAIN ; 跳到主程序MAIN处

03: ORG 000BH ; 守时器T0溢出进口地址

04: JMP EXT0 ; 跳到守时器中止EXT0处

05: ORG 001BH ; 计数器T1溢出进口地址

06: JMP EXT1 ; 跳到计数器中止EXT1处

07: MOV SP, #60H ; 设置仓库 进口地址

08: MAIN: MOV TMOD, #01100001B;设T0形式1,T1形式2

09: MOV TL0, #LOW(65536-50000) ; 装入守时初值

10: MOV TH0, #HIGH(65536-50000);

11: MOV TL1, #(256-100) ; 装入计数初值

12: MOV TH1, #(256-100);

13: MOV IE, #10001010B ; 开总中止及T0、T1中止

14: SETB TR0 ; 发动T0开端守时

15: SETB TR1 ; 发动T1开端计数

16: JMP $ ; 等候溢出 主程序

17: EXT0: MOV TL0, #LOW(65536-50000) ;重加载

18: MOV TH0, #HIGH(65536-50000);

19: CPL P1.7 ; P1.7反相输出,并输入P3.5 T0中止

20: RETI ; T0中止子程序回来 子程序

21: EXT1: CPL P1.0 ; P1.0反相输出 T1中止

22: RETI ; T1中止子程序回来 子程序

23: END ; 完毕程序完毕

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/moni/260647.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部