单片机定时器中断实验 程序(汇编语言)不要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亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后循环下去
晚上实验啊,哪位好心人帮做一下,有追加分 展开
晚上实验啊,哪位好心人帮做一下,有追加分 展开
4个回答
展开全部
下列程序,已经经过实验,可以满足题目要求.
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 ;完
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 ;完
展开全部
;假定晶振频率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
;假定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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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++;
}
}
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++;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我千言万语,不知从何说起。我最敬爱是毛泽东。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询