单片机定时器中断实验 程序(汇编语言)不要c语言的

开机后第一秒钟L0,L2亮,第二秒钟L1,L3亮,第三秒L4,L6亮,第四秒钟L5,L7亮,第五秒L0,L2,L4,L6亮,第六秒钟,L1,L3,L5,L7亮,第七秒钟八... 开机后第一秒钟L0,L2亮,第二秒钟L1,L3亮,第三秒L4,L6亮,第四秒钟L5,L7亮,第五秒L0,L2,L4,L6亮,第六秒钟,L1,L3,L5,L7亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后循环下去
晚上实验啊,哪位好心人帮做一下,有追加分
展开
 我来答
做而论道
高能答主

推荐于2017-12-15 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
下列程序,已经经过实验,可以满足题目要求.
ORG 0000H
SJMP MAIN
ORG 000BH
SJMP T0_INT
MAIN:
MOV TMOD, #01H ;T0定时方式1
MOV TH0, #(65536-50000) / 256 ;定时50ms@12MHz
MOV TL0, #(65536-50000) MOD 256 ;
SETB TR0 ;启动T0
MOV IE, #82H ;开中断
;第一秒钟L0,L2亮,第二秒钟L1,L3亮,第三秒L4,L6亮,第四秒钟L5,L7亮,
;第五秒L0,L2,L4,L6亮,第六秒钟,L1,L3,L5,L7亮,第七秒钟八个二极管全亮,第八秒钟全灭.
MOV 30H, #11111010B
MOV 31H, #11110101B
MOV 32H, #10101111B
MOV 33H, #01011111B
MOV 34H, #10101010B
MOV 35H, #01010101B
MOV 36H, #00000000B
MOV 37H, #11111111B
MOV R0, #30H
MOV R7, #20
M_LOOP:
SJMP M_LOOP ;无限循环
T0_INT:
MOV TL0, #(65536-50000) MOD 256 ;
MOV TH0, #(65536-50000) / 256 ;定时50ms@12MHz
DJNZ R7, T0_END
MOV R7, #20
MOV P1, @R0
INC R0
CJNE R0, #38H, T0_END
MOV R0, #30H
T0_END:
RETI
END ;完
coolaa
2011-05-19 · TA获得超过408个赞
知道小有建树答主
回答量:165
采纳率:0%
帮助的人:187万
展开全部
;假定晶振频率12M
;假定P1口对应接8个LED,且高电平有效
;MCU:8051系列

CONT_DISP EQU 30H ;定义查表的计数变量,用于8个LED灯的显示状态
CONT_INT EQU 31H ;定义中断间隔的计数变量,用于控制20个中断为1秒的时间间隔

ORG 00H
AJMP GO
ORG 0BH
AJMP INT0_1 ;定时器0,工作方式1

GO:
MOV SP,#60H
MOV P1,#00H ;P1口初始全部关闭
MOV CONT_DISP,#8 ;查表取LED点亮状态,注意此处为了减少变量,查表采用从尾到首的顺序,所以初始值为表末位数
MOV TMOD,#01H ;定时器工作方式1
MOV TH0,#0BH
MOV TL0,#3CH ;计数器初始设定,中断间隔为50ms
SETB TR0
SETB ET0
SETB EA ;计数器开始工作
LOOP: ;以下几句为不断为P1口送值,点亮相应的LED
MOV A,CONT_DISP
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
AJMP LOOP
;----------------以下为中断处理程序---------------
INT0_1:
PUSH ACC ;保护现场
MOV TH0,#0BH
MOV TL0,#3CH ;定时器初值重装
DJNZ CONT_INT,RETINT
MOV CONT_INT,#20 ;20个中断判定
DJNZ CONT_DISP,RETINT ;每20个中断,即1秒,查表数减1
MOV CONT_DISP,#8 ;到1再循环
RETINT:
POP ACC
RETI

TAB:
NOP
DB 00H,0FFH,0AAH,55H,0A0H,50H,0AH,05H ;注意此表为从尾倒查式, 上面一句NOP不可少.

END
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
怪咖小小鱼
2019-10-17
知道答主
回答量:1
采纳率:0%
帮助的人:674
展开全部
#include<reg52.h>
typedef unsigned int uint;
typedef unsigned char uchar;
uint n=0;
uint i=0;
uint led[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,
0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0x00,0xff};
void main()
{
TMOD=0x01;
TH0=0x4c;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
P1=0xff;

while(1)

{
P1=led[n];
if(n==18)n=0;
}
}
void time0() interrupt 1 using 1
{
TH0=0x4c;
TL0=0x00;
i++;
if(i>=20)
{
i=0;
n++;

}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AGP66105
2011-05-18
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
我千言万语,不知从何说起。我最敬爱是毛泽东。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式