单片机程序设计 很简单的 高分悬赏

利用定时/计数器产生定时时钟,由P1口控制8个指示灯,编写程序,使8个指示灯依次轮流点亮,每个灯亮1秒,每个灯闪亮频率为5次/秒。

使用计数器 利用定时/计数器产生定时时钟 。。。

基本要求
= = 只能用P1的8个端口 ···谢谢啊 帮个忙 亮1秒就是 那个灯亮1秒的时候 闪烁5次

每个灯亮1秒,每个灯闪亮频率为5次/秒。
下列程序,在PROTEUS中仿真通过.
;-------------------------------------
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0_INT
ORG 0030H
MAIN:
MOV SP, #7FH
MOV TMOD,#01H
MOV TL0, #LOW(65536-50000)
MOV TH0, #HIGH(65536-50000)
SETB TR0
MOV IE, #82H
MOV R2, #2
MOV R3, #10
MOV R4, #0
M_LOOP:
LJMP M_LOOP ;等待中断,一切闪动、移位,都在中断里面解决
;----------------------------------------------------------------
T0_INT:
MOV TL0, #LOW(65536-50000)
MOV TH0, #HIGH(65536-50000)
DJNZ R2, T0_END
MOV R2, #2 ;加大此数字,如改为8,可降低速度,便于观察.
INC R4
DJNZ R3, FLASH ;100ms减一次一.
MOV R3, #10
INC R6 ;1s加一次一
FLASH:
MOV A, R6
ANL A, #7
MOV R5, A ;0~7, 1s换一次位.
INC R5
MOV A, R4
MOV C, ACC.0
MOV A, #255
MOV P1, A ;关显示
T0_LOOP:
RLC A
DJNZ R5, T0_LOOP
MOV P1, A
T0_END:
RETI
;------------------------------------------------------------
END
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-01-16
每秒闪5次 就是一秒 亮 灭5 次 定时器设置成100毫秒中断

void T0_init(void); //函数声明

uchar i;

void main(void)
{
P1 = 0xfe; //初始状态是 P10为低电平 P10对应的LED点亮
while(1)
{}
}

void int0() interrupt 1 //这是中断函数
{
i++;
if(i==8) //保证 变量i 在0到7之间循环
{
i = 0;
}

switch(i)
{
case 0: P1 = 0xfe; //11111110
case 1: P1 = 0xfd; //11111101
case 2: P1 = 0xfb; //11111011
case 3: P1 = 0xf7; //11110111
case 4: P1 = 0xef; //11101111
case 5: P1 = 0xdf; //11011111
case 6: P1 = 0xbf; //10111111
case 7: P1 = 0x7f; //01111111
}
}

void T0_init(void)
{
TMOD=0x01;
TH0=0x3c;
TL0=0xaf;
ET0=1;
EA=1;
TR0=1;
}
第2个回答  2010-01-16
没电路图就来求程序?是作业吧。
就算你把程序抄走,老师检查时随便问你个问题你就傻眼。
如果程序是你自己用,呵呵,你这水平还是多看看书再实践吧……
第3个回答  2010-01-16
是很简单 自己做吧

会很有成就感的

上学那会随便一个科目 都要求做数字钟

什么模电 数电 EDA 单片机 等等

实在不会 学校图书馆这类书也不少 自己试着弄懂

毕业这么多年 学校教的还是这些

O(∩_∩)O~
第4个回答  2010-01-16
org 00h
sjmp main
org 0bh
sjmp t_0
org 30
main:
mov a,#01h
mov r7,#10
mov r6,#5
mov sp,#60h
mov ie,#10000010b
mov tmod,#01h
mov th0,#0ffh
mov tl0,#0fah
setb tr0
sjmp $
t_0:
clr tr0
mov th0,#0ffh
mov tl0,#0fah

djnz r7,exit
mov r7,#01
mov p1,a
djnz r6,exit
rl a
mov r6,#5
mov r7,#10
exit:
setb tr0
reti
end
相似回答