生日礼物
来源:互联网 发布:python keras 股票 编辑:程序博客网 时间:2024/05/16 19:08
LED EQU 08H
L0A EQU 09H
ORG 0000H
AJMP MAIN
ORG 000BH;计数器T0溢出中断
JMP tim0
ORG 0030h
MAIN: MOV SP,#60H
MOV P0,#00000000B
MOV P2,#10001111B
LCALL DELAY1S
mov tmod,#01h ;设定时方式(方式1)
mov ie,#82h ;开中断,允许T0中断
start0:
mov 30h,#00h ;
next: mov a,30h
mov dptr,#table2
movc a,@a+dptr ;查表取音调和节拍
mov r2,a
jz end0 ;为零,不进行处理.JZ(累加器为零则转移)
anl a,#0fh
mov r5,a ;将节拍存入R5
mov a,r2
swap a
anl a,#0fh
jnz sing ;根据音调决定是否演奏.
clr tr0
jmp d1
sing: dec a
mov 22h,a ;将音调存入22H.
rl a
mov dptr,#table1
movc a,@a+dptr ;根据音调决定定时器初值.
mov th0,a ;放入TH0
mov 21h,a
mov a,22h
rl a
inc a
movc a,@a+dptr
mov tl0,a ;放入TL0
mov 20h,a
setb tr0 ;启动定时
d1: Lcall DELAY10MS
Lcall DELAY10MS
Lcall DELAY10MS
Lcall DELAY10MS
Lcall DELAY10MS
inc 30h
jmp next
end0: clr tr0
jmp LOOP5
tim0: ;定时器中断服务程序
push acc
push psw
mov tl0,20h ;重赋初值.
mov th0,21h
cpl p3.3
pop psw
pop acc
reti
LOOP5:MOV R3,#03H
LOOP0:
MOV A,R3
MOV L0A,A
MOV P0,#11111110B
MOV P2,#11101111B
LCALL DELAY10MS
MOV P0,#11111101B
MOV P2,#11011111B
LCALL DELAY10MS
MOV P0,#11111011B
MOV P2,#10111111B
LCALL DELAY10MS
MOV P0,#01110111B
MOV P2,#11111111B
LCALL DELAY10MS
MOV P0,#10101111B
LCALL DELAY10MS
MOV P0,#11011111B
LCALL DELAY10MS
MOV P0,#10101111B
LCALL DELAY10MS
MOV P0,#01110111B
LCALL DELAY10MS
MOV P0,#11111011B
MOV P2,#10111111B
LCALL DELAY10MS
MOV P0,#11111101B
MOV P2,#11011111B
LCALL DELAY10MS
MOV P0,#11111110B
MOV P2,#11101111B
LCALL DELAY10MS
LOOP1:
MOV P2,#11111111B
LCALL DELAY10MS
LCALL DELAY10MS
MOV P1,#00000000B
LCALL DELAY10MS
MOV P0,#11111110B
LCALL DELAY10MS
MOV P0,#11111101B
LCALL DELAY10MS
MOV P0,#11111011B
LCALL DELAY10MS
MOV P0,#11110111B
LCALL DELAY10MS
MOV P0,#11101111B
LCALL DELAY10MS
MOV P0,#11011111B
LCALL DELAY10MS
MOV P0,#10111111B
LCALL DELAY10MS
MOV P0,#01111111B
LCALL DELAY10MS
MOV P0,#11111111B
MOV P2,#10111111B
LCALL DELAY10MS
MOV P2,#11011111B
LCALL DELAY10MS
MOV P2,#11101111B
LCALL DELAY10MS
MOV P0,#11111110B;Z
LCALL DELAY10MS
MOV P0,#11111101B
LCALL DELAY10MS
MOV P0,#11111011B
LCALL DELAY10MS
MOV P0,#11110111B
LCALL DELAY10MS
MOV P0,#11101111B
LCALL DELAY10MS
MOV P0,#11011111B
LCALL DELAY10MS
MOV P0,#10111111B
LCALL DELAY10MS
MOV P0,#01111111B
LCALL DELAY10MS
MOV P0,#11111111B
MOV P2,#10101111B
LCALL DELAY10MS
MOV P2,#11001111B
LCALL DELAY10MS
MOV P0,#11111110B;Z
LCALL DELAY10MS
MOV P0,#11111101B
LCALL DELAY10MS
MOV P0,#11111011B
LCALL DELAY10MS
MOV P0,#11110111B
LCALL DELAY10MS
MOV P0,#11101111B
LCALL DELAY10MS
MOV P0,#11011111B
LCALL DELAY10MS
MOV P0,#10111111B
LCALL DELAY10MS
MOV P0,#01111111B
LCALL DELAY10MS
MOV P0,#11111111B
MOV P2,#10001111B
LCALL DELAY10MS
MOV P0,#11111110B;Z
LCALL DELAY10MS
MOV P0,#11111101B
LCALL DELAY10MS
MOV P0,#11111011B
LCALL DELAY10MS
MOV P0,#11110111B
LCALL DELAY10MS
MOV P0,#11101111B
LCALL DELAY10MS
MOV P0,#11011111B
LCALL DELAY10MS
MOV P0,#10111111B
LCALL DELAY10MS
MOV P0,#01111111B
LCALL DELAY10MS
MOV P0,#01111110B;Z
LCALL DELAY10MS
MOV P0,#01111101B
LCALL DELAY10MS
MOV P0,#01111011B
LCALL DELAY10MS
MOV P0,#01110111B
LCALL DELAY10MS
MOV P0,#01101111B
LCALL DELAY10MS
MOV P0,#01011111B
LCALL DELAY10MS
MOV P0,#00111111B
LCALL DELAY10MS
MOV P0,#00111110B;Z
LCALL DELAY10MS
MOV P0,#00111101B
LCALL DELAY10MS
MOV P0,#00111011B
LCALL DELAY10MS
MOV P0,#00110111B
LCALL DELAY10MS
MOV P0,#00101111B
LCALL DELAY10MS
MOV P0,#00011111B
LCALL DELAY10MS
MOV P0,#00011110B;Z
LCALL DELAY10MS
MOV P0,#00011101B
LCALL DELAY10MS
MOV P0,#00011011B
LCALL DELAY10MS
MOV P0,#00010111B
LCALL DELAY10MS
MOV P0,#00001111B
LCALL DELAY10MS
MOV P0,#00001110B;Z
LCALL DELAY10MS
MOV P0,#00001101B
LCALL DELAY10MS
MOV P0,#00001011B
LCALL DELAY10MS
MOV P0,#00000111B
LCALL DELAY10MS
MOV P0,#00000110B;Z
LCALL DELAY10MS
MOV P0,#00000101B
LCALL DELAY10MS
MOV P0,#00000011B
LCALL DELAY10MS
MOV P0,#00000010B;Z
LCALL DELAY10MS
MOV P0,#00000001B
LCALL DELAY10MS
MOV P0,#00000000B;Z
LCALL DELAY10MS
MOV A,L0A
MOV R3,A
DJNZ R3,LOOP6
LJMP MAIN
LOOP6:LJMP LOOP0
DELAY1S: MOV R3, #10 ;延时1S的子程序
DELAYA: MOV R4, #200
DELAYB: MOV R5, #247
DJNZ R5, $
DJNZ R4, DELAYB
DJNZ R3, DELAYA ;247*2*200*10+200*2*10+2*10+1*10+1*200=0.992230S
RET
DELAY10MS:
MOV R6,#3H
LOOP2: ORL P2,#00000001B
ANL P2,#11110111B
MOV LED,#00H
MOV A,LED
MOV DPTR, #TABLE
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY100MS
INC LED
ORL P2,#00001000B
ANL P2,#11111011B
MOV A,LED
MOV DPTR, #TABLE
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY100MS
INC LED
ORL P2,#00000100B
ANL P2,#11111101B
MOV A,LED
MOV DPTR, #TABLE
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY100MS
INC LED
ORL P2,#00000010B
ANL P2,#11111110B
MOV A,LED
MOV DPTR, #TABLE
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY100MS
DJNZ R6,LOOP2
RET
DELAY100MS: MOV R5, #1 ;延时20MS的子程序
AK: MOV R3, #25
BK: MOV R4, #100
DJNZ R4, $
DJNZ R3, BK
DJNZ R5, AK
RET
table1: ;决定音调的定时初值.
dw 64260,64400,64524,64580
dw 64684,64777,64820,64898
dw 64968,65030,65058,65110
dw 65157,65178,65217
table2: ;决定音调和节拍的表格,不同的歌曲只是此表不同
;1
db 82h,01h,81h,94h,84h,0b4h,0a4h,04h,82h,01h,81h,94h,84h,0c4h,0b4h,04h
;2
db 82h,01h,81h,0f4h,0d4h,0b4h,0a4h,94h,0e2h,01h,0e1h,0d4h,0b4h,0c4h,0b4h,04h
;3
db 82h,01h,81h,94h,84h,0b4h,0a4h,04h,82h,01h,81h,94h,84h,0c4h,0b4h,04h
;4
db 82h,01h,81h,0f4h,0d4h,0b4h,0a4h,94h,0e2h,01h,0e1h,0d4h,0b4h,0c4h,0b4h,04h,00
TABLE:
DB 8EH
DB 0C7H
DB 0C0H
DB 92H
END
- 生日礼物
- 生日礼物
- 生日礼物
- 生日礼物
- 生日礼物
- 生日礼物
- 生日礼物-大功告成
- [SCOI2009]生日礼物
- [SCOI2009]生日礼物
- DFS【生日礼物】
- codevs1005 生日礼物
- bzoj1293 生日礼物
- 1005 生日礼物
- NOIP2006 生日礼物
- 【SCOI2009】生日礼物
- 【u220】生日礼物
- 【Bzoj1293】生日礼物
- Jzoj1310 生日礼物
- .Net反射技术应用解决对象不同版本方法不同参数的问题
- 初中踢球的日子
- 缘
- Server中的Cookie过期问题
- 编程好习惯
- 生日礼物
- 一些常用的API
- 改善C#程序的50种方法
- ASP.NET 数据绑定常用代码
- 简单全屏程序
- GTK+学习笔记-树型视图与模型(GtkTreeView)
- 基于.net开发平台项目案例集锦
- 控制台程序改变控制台的字体颜色(适用VB.Net)
- 推荐一个好用的网络硬盘