其他:不知道汇编语言,只知道C 这是数码管动态动态现实方式0—7,一共8个数字,你自己可以改成学好,对应显示就可以了。 ORG 00H MOV 20H,#3FH MOV 找本单片机的书,有很多汇编语言点亮数码管的子程序的!自己研究一段,做成一个子程序就OK了! 没线路图,说了也是白说。 #include <REG52.H>
#include <intrins.h>
#include "absacc.h"
void time(unsigned int ucMs); /*延时单位: ms*/
void display(void); /*显示0, 1,..,7*/
/*********************************************************/
void main (void)
{
while(1)
{
display();
}
}
void display(void) /*显示0, 1, ,7*/
{
unsigned char code LEDValue[8]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};
unsigned char i;
unsigned char position=0x01;
for (i=0; i<8; i++)
{
XBYTE[0x0FFF8] = LEDValue[i]; /*显示内容*/
XBYTE[0x0FFF9] = position; /*位译码输入*/
position = position<<1;
time(1); /*状态维持*/
}
}
/*********************************************************
* 函数说明:延时5us,晶振改变时只用改变这一个函数!
1、对于11.0592M晶振而言,需要2个_nop_();
2、对于22.1184M晶振而言,需要4个_nop_();
*********************************************************/
void delay_5us(void) //延时5us,晶振改变时只用改变这一个函数!
{
_nop_();
_nop_();
}
/************ delay_50us ***************/
void delay_50us(void) //延时50us
{
unsigned char i;
for(i=0;i<4;i++)
{
delay_5us();
}
}
/******** 延时100us ******************/
void delay_100us(void) //延时100us
{
delay_50us();
delay_50us();
}
/*********** 延时单位:ms *******************/
void time(unsigned int ucMs)//延时单位:ms
{
unsigned char j;
while(ucMs>0){
for(j=0;j<10;j++) delay_100us();
ucMs--;
}
} ORG 00H
AJMP MAIN
ORG 30H
MAIN: MOV 20H,#2 ;把你的学号的10位送到相应单元
MOV 21H,#8
MOV 22H,#3
MOV 23H,#0
MOV 24H,#8
MOV 25H,#5
MOV 26H,#0
MOV 27H,#4
MOV 28H,#0
MOV 29H,#7
LCALL DISP ;显示子程序
AJMP MAIN
DISP: MOV A,20H ;送最高位到A
ACALL SEG7 ;取码指针子程序
MOV P0,A ;段码送P0口
CLR P2.0 ;位选
ACALL DLY ;延时1MS,即显示1MS
SETB P2.0 ;关显示。 动态显示的方法就是 :取优码,送段码,位选,延时1MS,关显示.
MOV A,21H ;下一位
ACALL SEG7
MOV P0,A
CLR P2.1
ACALL DLY
SETB P2.1
MOV A,22H
ACALL SEG7
MOV P0,A
CLR P2.2
ACALL DLY
SETB P2.2
MOV A,23H
ACALL SEG7
MOV P0,A
CLR P2.3
ACALL DLY
SETB P2.3
MOV A,24H
ACALL SEG7
MOV P0,A
CLR P2.4
ACALL DLY
SETB P2.4
MOV A,25H
ACALL SEG7
MOV P0,A
CLR P2.5
ACALL DLY
SETB P2.5
MOV A,26H
ACALL SEG7
MOV P0,A
CLR P2.6
ACALL DLY
SETB P2.6
MOV A,27H
ACALL SEG7
MOV P0,A
CLR P2.7
ACALL DLY
SETB P2.7
MOV A,28H
ACALL SEG7
MOV P0,A
CLR P3.0
ACALL DLY
SETB P3.0
MOV A,29H
ACALL SEG7
MOV P0,A
CLR P3.1
ACALL DLY
SETB P3.1
RET
DLY: MOV R7,#10 ;延时1MS子程序。12M晶振,粗略算法:2X R7 X R6
D1: MOV R6,#50
DJNZ R6,$
DJNZ R7,D1
RET
SEG7: INC A
MOVC A,@A+PC
RET
DB 03FH;0 共阴管段码
DB 006H;1
DB 05BH;2
DB 04FH;3
DB 066H;4
DB 06DH;5
DB 07DH;6
DB 007H;7
DB 07FH;8
DB 06FH;9
上一个:求高手帮我翻译一下这汇编语言每一句是什么意思!!!万分感谢!!!
下一个:有关汇编语言的那个版本的最好?