由于本人的电脑坏了,硬盘彻底报废,所以很伤心了一阵。在这里也提醒大家,记得硬盘备份或者把一些重要的资料刻录在光盘中保存,这样就不会出现我这种很无助的状况了。几年下来的,资料全没了,连那些照片都没了,现在真的后悔当初为什么不备份。想对她说,爱你,但是没东西给你。
好了不说闲话了,在这里发布几个年前做过的小程序。流水等实验是大学里最基本的程序,这里集合了一下几个,有c语言的和汇编的。大家可看看不同程序之间的共同点和区别。
;1、广告流水灯程序
ORG 00H
MOV P2,#80H
START:MOV A,#0FFH ;赋初值
CLR C
MOV R2,#8
LOOP:RRC A ; 带进位右移
MOV P1,A
CALL DELAY
DJNZ R2,LOOP
MOV R2,#7
LOOP1:RLC A ; 带进位左移
MOV P1,A
CALL DELAY
DJNZ R2,LOOP1
JMP START
DELAY:MOV R3,#20 ; 延时0.2秒
D1: MOV R4,#20
D2: MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
END
内容:循环点亮P1口对应的8个LED灯,造成循环流水点亮的效果
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
/*------------------------------------------------
延时子程序
------------------------------------------------*/
void delay(unsigned int cnt)
{
while(--cnt);
}
/*------------------------------------------------
主函数
------------------------------------------------*/
main()
{
P1=0xfe; //给初始化值 换算成二进制是1111 1110
while(1)
{
delay(30000);//延时程序
P1<<=1; //左移一位 该语句等效于 P1=P1<<1
P1|=0x01; //最后一位补1,该语句等效于 P1=P1|0x01 符号"|"表示"或"
if(P1==0x7f) //检测是否移到最左端?"=="表示检测符号2端的值是否相等
{
delay(30000);
P1=0xfe; //重新赋值
}
}
}
;项目名称:来回流水灯
;硬件环境:AT89S52
;硬件描述:P0口接八个LED
;功能描述:LED流水实验
;*******************************************************
ORG 0000H
AJMP START
ORG 0030H
START: MOV P0,#0FFH
MOV A,#0FEH
AAA: MOV P0,A
LCALL DELAY
JNB P1.3,BBB
RL A
AJMP AAA
BBB: MOV A,#7FH
CCC: MOV P0,A
LCALL DELAY
JNB P1.0,START
RR A
AJMP CCC
DELAY: MOV R7,#250
DL1: MOV R6,#100
DL2: MOV R5,#10
DJNZ R5,$
DJNZ R6,DL2
DJNZ R7,DL1
RET
END
流水灯--基于单片机-移位法
ORG 0000H
MAIN:
MOV A,#0A0H
D2:MOV P1,A
CALL DELAY
RR A
LJMP D2
DELAY: MOV R5,#250
D1: MOV R6,#250
DJNZ R6,$
DJNZ R5,D1
RET
END
;查表法广告流水灯
ORG 00H
MOV P2,#80H
START: MOV DPTR,#TABLE ; 将表的地址存入数据指针
LOOP: CLR A
MOVC A,@A+DPTR ;到数据指针所指的地址取码
CJNE A,#01,LOOP1 ; 取出的码是否01H?否则跳到LOOP1
JMP START
LOOP1: MOV P1,A
MOV R3,#20
CALL DELAY
INC DPTR
JMP LOOP
DELAY: MOV R4,#20
D1: MOV R5,#248
DJNZ R5,$
DJNZ R4,D1
DJNZ R3,DELAY
RET
TABLE: DB 0FEH,0FDH,0FBH,0F7H ;左移
DB 0EFH,0DFH,0BFH,7FH
DB 0FEH,0FDH,0FBH,0F7H ;左移
DB 0EFH,0DFH,0BFH,7FH
DB 7FH,0BFH,0DFH,0EFH ;右移
DB 0F7H,0FBH,0FDH,0FEH
DB 7FH,0BFH,0DFH,0EFH ;右移
DB 0F7H,0FBH,0FDH,0FEH
DB 00H,0FFH,00H,0FFH ;闪烁
DB 01H ;结束码
END
文章评论(0条评论)
登录后参与讨论