89C51单片机,每计时一秒将P1端口翻转一次,晶振频率12MHz,中断方式实现。这里另外一个查询方式的实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | org 8000h ;定位 ljmp start org 801bh ;中断向量 ljmp int_t1 org 8100h start: mov sp, #60h mov tmod, #10h ;置T1为方式1 mov tl1, 0fch mov th1, #4bh ;设初值,定时为50ms mov r1, #20 ;中断次数,以使定时为1ms setb tr1 ;启动定时器T1 clr a ;累加器清零 setb et1 ;T1中断允许 setb ea ;开总外部中断标志 sjmp $ ;等待中断 int_t1: ;中断服务子程序 push psw ;保存程序状态字 mov tl1, #0fch ;重装计数器 mov th1, #4bh djnz r1, exit ;1s时间未到,返回主程序,等待下一次中断 mov r1, #20 ;1s时间到,重装r1 cpl a ;a取反 mov p1, a ;输出a exit: pop psw ;程序状态字出栈 reti DELAY: PUSH 06H PUSH 07H MOV R7, #70H LABEL1: MOV R6, #70H LABEL2: DJNZ R6, $ DJNZ R7, LABEL1 POP 07H POP 06H RET END |
[warning]This is original article, you could copy it freely with my site links!
此日志为dutor原创,您可以自由转载,添加原文链接我将万分感激![/warning]
你好!除了代码,此处没有多少原创之物,皆为本人搜集、整理、总结之记录与心得,欢迎转载分享!转载时请尽量注明出处,将不胜感激。祝你健康、快乐!
Be the first to comment on this entry.