第十一到第二十的英文如下:
1、eleventh 第十一
2、twelfth 第十二
3、thirteenth 第十三。
4、fourteenth 第十四。
5、fifteenth 第十五。
6、sixteenth 第十六。
7、seventeenth 第十七。
8、eighteenth 第十八。
9、nineteenth 第十九。
10、twentieth 第二十。
扩展资料:
英语中数词主要分为基数词和序数词两类。所谓基数,在数学上的理解是可以比较大小的数字。英语中的基数词是用于描述事物数量的多少。所以,基数词的定义为:描述事物数量的多少的数词称为基数词。
序数词是数词的一种,主要在英语语法中讲到,在汉语中表示为“第几”。此外,在生日中,描述你出生的日期时,也会用到序数词。比如:May-first (5月1日)。
记忆口诀
基变序,有规律,词尾加上-th。
一,二,三,特殊记,词尾字母t,d,d。
八去t,九除e,ve要用f替,ty将y变成i,th前面有个e。
若是碰到几十几,前用基来后用序。
近期,歌手张敬轩在香港红馆里举办了自己的个人演唱会,来到现场的歌迷们都超级激动。虽然当地的新冠疫情还未完全散去,但是相比于前段时间,已经恢复得很不错,随着疫情逐渐散去,有一些歌手、演员也在开展自己的活动,所以,张敬轩也来到香港红馆举办了自己的演唱会。
张敬轩本次的红馆演唱会邀请了有霍启刚和霍启山两兄弟,还有娱乐圈的高层杨受成夫妇、卫诗雅、泳儿、曾乐彤、陈山聪、 吕爵安 (Edan)、郭嘉骏、陈洁灵、 彭秀慧、许靖韵、谷德昭等人。可以说,张敬轩这次的演唱会,到场的嘉宾的阵容是很豪华的,通过社交媒体平台中分享的张敬轩香港红馆演唱会,大多数到场的嘉宾和观众都是佩戴者口罩。
张敬轩在香港红馆举办的The Next 20 Hins演唱会,有不少火歌,张敬轩在现场的装扮也很亮眼,身穿紫金色披风,吸引全场的目光,开始为大家火热开唱。
一、张敬轩-别为我好 (The Next 20 Hins Live In Hong Kong)。
二、张敬轩-On my way(The Next 20 Hins Live In Hong Kong)
三、张敬轩/王菀之-留白 (The Next 20 Hins Live In Hong Kong) 。
四、张敬轩/邓丽欣-十分爱+他不准我哭 (The Next 20 Hins Live In Hong Kong)。
程序很长,不过功能很齐全,自己把不要的功能删了,里面的子程序部分我都写有注释,很容易看懂。
datarea segment。
english dw 10 dup(?) ;存放英语成绩。
mathematics dw 10 dup(?) ;存放数学成绩。
physical dw 10 dup(?) ;存放物理成绩。
grade dw 10 dup(?)。
rank dw 10 dup(?)。
rank1 dw 10 dup(?)。
rank2 dw 10 dup(?)。
rank3 dw 10 dup(?)。
s5 dw 0。
s6 dw 0。
s7 dw 0。
s8 dw 0。
s9 dw 0。
s10 dw 0。
count1 dw ?
count2 dw ?
count3 dw ?
count4 dw ?。
mess1 db 'Grade of English:$'。
mess2 db 'Grade of Mathematics:$'。
mess3 db 'Grade of Physical:$'。
mess4 db 13,10,'Input Error!Please input repeat.',13,10,'$'。
mess5 db 'Rank student number of English:$'。
mess6 db 'Rank studentnumber of Math:$'。
mess7 db 'Rank studentnumber of Physical:$'。
mess8 db ' Student Grade Management System',0ah,0dh,'$'。
mess9 db 'Plese choose: 1:Continue 2:Exit$'。
mess10 db 'Average grade of English:$'。
mess11 db 'Average grade of Math:$'。
mess12 db 'Average grade of Physical:$'。
mess13 db 'Plese choose: 1:Enter 2:Exit$'。
mess14 db 'Rank of overallscore:$'。
mess15 db 'Rank of student number with overallscore:$'。
mess16 db 'Please input grade(English,Math,Physical):$'。
mess17 db 'People of Englsh grade(<60,60---69,70---79,80---89,90---99,=100):$'。
mess18 db 'People of Math grade(<60,60---69,70---79,80---89,90---99,=100):$'。
mess19 db 'People of Physical grade(<60,60---69,70---79,80---89,90---99,=100):$'。
datarea ends
;*****************************************************************************。
show macro addrs。
lea dx,addrs。
mov ah,9 ;宏定义,显示字符串。
int 21h。
endm
;*******************************************************************************。
prognam segment 。
;*******************************************************************************。
main proc far
assume cs:prognam,ds:datarea。
START:
;设置堆栈为了返回dos
push ds
sub ax,ax
push ax
mov ax,datarea。
mov ds,ax
call clear
mov ah,2 ;调用置光标位置功能。
mov dh,1 ;使光标位置置为位置(1,8)
mov dl,8。
mov bh,0 ;页号为0。
int 10h ;BIOS显示中断调用。
show mess8
call choose。
ret
main endp
;*******************************************************************************。
choose proc near ;菜单选择 。
show mess13 。
call crlf ;调用换行函数。
mov ah,01。
int 21h。
cmp al,31h。
jnz exit。
next17:
call crlf。
show mess16。
call crlf。
call input1 ;英语成绩输入。
call rankp ;英语成绩排序。
call output1 ;英语成绩按学号对应的排名输出。
call input2 ;数学成绩输入。
call rankp1 ;数学成绩排序。
call output2 ;数学成绩按学号对应的排名输出。
call input3 ;物理成绩输入。
call rankp2 ;物理成绩排序。
call output3 ;物理成绩按学号对应的排名输出。
call crlf。
call engrade ;英语平均成绩。
call magrade ;数学平均成绩。
call phgrade ;物理平均成绩。
call crlf。
call encount ;英语各分数段统计。
call output7。
call macount ;数学各分数段统计。
call output8。
call phcount ;物理各分数段统计。
call output9。
call crlf。
call graderank ;计算每个人的总成绩。
call rankp3。
call output5 ;总成绩按其学号对应的排名输出。
call rankg。
call output4 ;总成绩按分数总和从大至小排行输出。
show mess9。
call crlf。
mov ah,01。
int 21h。
cmp al,31h。
jnz exit
jmp next17。
exit:
ret
choose endp
;*******************************************************************************。
input1 proc near ;英语成绩输入。
next18:
show mess1
mov si,0 ;至数组下标为0。
mov count1,0
mov cx,10。
next30:
mov english[si],0。
add si,2。
loop next30。
mov si,0。
enter:
call decibin ;十进制转二进制数。
inc count1 ;count自增1。
cmp dl,',' ;dl里的内容与‘,’相等则转移至store。
je store
cmp dl,13
je exit2
jne error
store:
mov english[si],bx ;将成绩送入储存单元。
add si,2
jmp enter
error:
show mess4
jmp next18。
exit2:
mov english[si],bx。
call crlf
ret
input1 endp
;*******************************************************************************。
input2 proc near ;数学成绩输入。
next19:
show mess2
mov si,0
mov count2,0
mov cx,10。
next31:
mov mathematics[si],0。
add si,2。
loop next31。
mov si,0。
enter1:
call decibin
inc count2
cmp dl,','
je store1
cmp dl,13
je exit3
jne error1
store1:
mov mathematics[si],bx。
add si,2
jmp enter1
error1:
show mess4
jmp next19。
exit3:
mov mathematics[si],bx。
call crlf
ret
input2 endp
;******************************************************************************。
input3 proc near ;物理成绩输入。
next20:
show mess3
mov si,0
mov count3,0
mov cx,10。
next32:
mov physical[si],0。
add si,2。
loop next32。
mov si,0。
enter3:
call decibin
inc count3
cmp dl,','
je store2
cmp dl,13
je exit4
jne error3
store2:
mov physical[si],bx。
add si,2
jmp enter3
error3:
show mess4
jmp next20。
exit4:
mov physical[si],bx。
call crlf
ret
input3 endp
;******************************************************************************。
rankp proc near ;英语成绩排序。
mov di,count1
mov bx,0
loop1:
mov ax,english[bx]。
mov word ptr rank[bx],0。
mov cx,count1
lea si,english。
next:
cmp ax,[si]
jg no_count
inc word ptr rank[bx]。
no_count:
add si,2
loop next
add bx,2
dec di
jne loop1
ret
rankp endp
;*****************************************************************************。
rankp1 proc near ;数学成绩排序。
mov di,count2
mov bx,0
loop2:
mov ax,mathematics[bx]。
mov word ptr rank1[bx],0。
mov cx,count2
lea si,mathematics。
next1:
cmp ax,[si]
jg no_count1
inc word ptr rank1[bx]。
no_count1:
add si,2
loop next1
add bx,2
dec di
jne loop2
ret
rankp1 endp
;*****************************************************************************。
rankp2 proc near ;物理成绩排序。
mov di,count3
mov bx,0
loop3:
mov ax,physical[bx]。
mov word ptr rank2[bx],0。
mov cx,count3
lea si,physical。
next3:
cmp ax,[si]
jg no_count2
inc word ptr rank2[bx]。
no_count2:
add si,2
loop next3
add bx,2
dec di
jne loop3
ret
rankp2 endp
;*****************************************************************************。
rankp3 proc near ;总分数按学号对应的名次输出。
mov di,count4
mov bx,0
loopc:
mov ax,grade[bx]。
mov word ptr rank3[bx],0。
mov cx,count3
lea si,grade
nextc:
cmp ax,[si]
jg no_count3
inc word ptr rank3[bx]。
no_count3:
add si,2
loop nextc
add bx,2
dec di
jne loopc
ret
rankp3 endp
;*****************************************************************************。
output1 proc near ;英语成绩按学号对应的名次输出。
show mess5
mov si,0
mov di,count1
next10:
mov bx,rank[si]。
call binidec
mov dl,','
mov ah,02
int 21h
add si,2
dec di
jnz next10
call crlf
ret
output1 endp
;*****************************************************************************。
output2 proc near ;数学成绩按学号对应的名次输出。
show mess6
mov si,0
mov di,count2
next11:
mov bx,rank1[si]。
call binidec
mov dl,','
mov ah,02
int 21h
add si,2
dec di
jnz next11
call crlf
ret
output2 endp
;*****************************************************************************。
output3 proc near ;物理成绩按学号对应的名次输出。
show mess7
mov si,0
mov di,count3
next13:
mov bx,rank2[si]。
call binidec
mov dl,','
mov ah,02
int 21h
add si,2
dec di
jnz next13
call crlf
ret
output3 endp
;*****************************************************************************。
output4 proc near ;总分成绩按分数排序输出。
show mess14。
mov si,0
mov di,count1
next21:
mov bx,grade[si]。
call binidec
mov dl,','
mov ah,02
int 21h
add si,2
dec di
jnz next21
call crlf
ret
output4 endp
;******************************************************************************。
output5 proc near ;总分成绩按学号排序输出。
show mess15。
mov si,0
mov di,count1
nextb:
mov bx,rank3[si]。
call binidec
mov dl,','
mov ah,02
int 21h
add si,2
dec di
jnz nextb
call crlf
ret
output5 endp
;******************************************************************************。
output7 proc near ;输出英语各分数段人数。
show mess17。
mov bx,s5。
call binidec。
mov dl,','。
mov ah,02
int 21h
mov bx,s6。
call binidec。
mov dl,','。
mov ah,02
int 21h
mov bx,s7。
call binidec。
mov dl,','。
mov ah,02
int 21h
mov bx,s8。
call binidec。
mov dl,','。
mov ah,02
int 21h
mov bx,s9。
call binidec。
mov dl,','。
mov ah,02
int 21h
mov bx,s10。
call binidec。
call crlf。
ret
output7 endp
;*********************************************************************************。
output8 proc near ;输出数学各分数段人数。
show mess18。
mov bx,s5。
call binidec。
mov dl,','。
mov ah,02
int 21h
mov bx,s6。
call binidec。
mov dl,','。
mov ah,02
int 21h
mov bx,s7。
call binidec。
mov dl,','。
mov ah,02
int 21h
mov bx,s8。
call binidec。
mov dl,','。
mov ah,02
int 21h
mov bx,s9。
call binidec。
mov dl,','。
mov ah,02
int 21h
mov bx,s10。
call binidec。
call crlf。
ret
output8 endp
;*********************************************************************************。
output9 proc near ;输出物理各分数段成绩。
show mess19。
mov bx,s5。
call binidec。
mov dl,','。
mov ah,02
int 21h
mov bx,s6。
call binidec。
mov dl,','。
mov ah,02
int 21h
mov bx,s7。
call binidec。
mov dl,','。
mov ah,02
int 21h
mov bx,s8。
call binidec。
mov dl,','。
mov ah,02
int 21h
mov bx,s9。
call binidec。
mov dl,','。
mov ah,02
int 21h
mov bx,s10。
call binidec。
call crlf。
ret
output9 endp
;*********************************************************************************。
engrade proc near ;计算英语平均成绩。
mov cx,10。
mov bx,0。
mov si,0。
next14:
mov dx,english[si]。
add bx,dx。
add si,2。
loop next14。
lea dx,mess10。
mov ah,09
int 21h
mov cx,1000。
call dec_div。
mov cx,100。
call dec_div。
mov cx,10
call dec_div。
call crlf。
ret
engrade endp
;*****************************************************************************。
magrade proc near ;计算数学平均成绩。
mov cx,10。
mov bx,0。
mov si,0。
next15:
mov dx,mathematics[si]。
add bx,dx。
add si,2。
loop next15。
lea dx,mess11。
mov ah,09
int 21h
mov cx,1000。
call dec_div。
mov cx,100。
call dec_div。
mov cx,10
call dec_div。
call crlf。
ret
magrade endp
;******************************************************************************。
phgrade proc near ;计算物理平均成绩。
mov cx,10。
mov bx,0。
mov si,0。
next16:
mov dx,physical[si]。
add bx,dx。
add si,2。
loop next16。
lea dx,mess12。
mov ah,09
int 21h
mov cx,1000。
call dec_div。
mov cx,100。
call dec_div。
mov cx,10
call dec_div。
call crlf。
ret
phgrade endp
;******************************************************************************。
rankg proc near ;总成绩按进行分数排序。
mov cx,10。
dec cx。
loop4:
mov di,cx。
mov bx,0。
loop5:
mov ax,grade[bx]。
cmp ax,grade[bx+2]。
jge continue。
xchg ax,grade[bx+2]。
mov grade[bx],ax。
continue:
add bx,2。
loop loop5。
mov cx,di。
loop loop4。
ret
rankg endp
;******************************************************************************。
graderank proc near ;个人总成绩分数的和的计算。
mov cx,10。
mov bx,0。
mov si,0。
mov count4,0。
loop10:
mov bx,english[si]。
add bx,mathematics[si]。
add bx,physical[si]。
mov grade[si],bx。
add si,2。
inc count4。
loop loop10。
ret
graderank endp。
;********************************************************************************。
encount proc near ;英语各分数段的统计。
mov s5,0。
mov s6,0。
mov s7,0。
mov s8,0。
mov s9,0。
mov s10,0。
mov cx,10。
mov bx,offset english。
compare:
mov ax,[bx]。
cmp ax,60。
jl five。
cmp ax,70。
jl six。
cmp ax,80。
jl seven。
cmp ax,90。
jl eight。
cmp ax,100。
jne nine。
inc s10。
jmp short change_addr。
nine:
inc s9。
jmp short change_addr。
eight:
inc s8。
jmp short change_addr。
seven:
inc s7。
jmp short change_addr。
six:
inc s6。
jmp short change_addr。
five:
inc s5。
change_addr:
add bx,2。
loop compare。
ret
encount endp
;********************************************************************************。
macount proc near ;数学各分数段的统计。
mov s5,0。
mov s6,0。
mov s7,0。
mov s8,0。
mov s9,0。
mov s10,0。
mov cx,10。
mov bx,offset mathematics。
compare1:
mov ax,[bx]。
cmp ax,60。
jl five1。
cmp ax,70。
jl six1。
cmp ax,80。
jl seven1。
cmp ax,90。
jl eight1。
cmp ax,100。
jne nine1。
inc s10。
jmp short change_addr1。
nine1:
inc s9。
jmp short change_addr1。
eight1:
inc s8。
jmp short change_addr1。
seven1:
inc s7。
jmp short change_addr1。
six1:
inc s6。
jmp short change_addr1。
five1:
inc s5。
change_addr1:
add bx,2。
loop compare1。
ret
macount endp
;********************************************************************************。
phcount proc near ;物理各分数段的统计。
mov s5,0。
mov s6,0。
mov s7,0。
mov s8,0。
mov s9,0。
mov s10,0。
mov cx,10。
mov bx,offset physical。
compare2:
mov ax,[bx]。
cmp ax,60。
jl five2。
cmp ax,70。
jl six2。
cmp ax,80。
jl seven2。
cmp ax,90。
jl eight2。
cmp ax,100。
jne nine2。
inc s10。
jmp short change_addr2。
nine2:
inc s9。
jmp short change_addr2。
eight2:
inc s8。
jmp short change_addr2。
seven2:
inc s7。
jmp short change_addr2。
six2:
inc s6。
jmp short change_addr2。
five2:
inc s5。
change_addr2:
add bx,2。
loop compare2。
ret
phcount endp
;********************************************************************************。
decibin proc near ;二进制转十进制。
mov bx,0 ;将bx里的内容清零。
newchar:
mov ah,1
int 21h ;调用dos,输入字符,字符存于al。
mov dl,al
sub al,30h ;将字符数字转为十进制数字 。
jl exit1 ;小于字符0就转移至exit1。
cmp al,9d ;输入数字与9比较,大于9就转移至exit1。
jg exit1
cbw ;将al符号扩展到ah。
xchg ax,bx ;将ax里的内容和bx里的内容交换。
mov cx,10d 。
mul cx ;al里的内容*10送到ax。
xchg ax,bx 。
add bx,ax
jmp newchar ;转移至newchar,重新输入成绩。
exit1: ret
decibin endp
;*****************************************************************************。
binidec proc near 。
push bx
push cx
push si
push di
mov cx,100d
call dec_div
mov cx,10d
call dec_div
mov cx,1d
call dec_div
pop di
pop si
pop cx
pop bx
ret
binidec endp
;*****************************************************************************。
dec_div proc near。
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al
add dl,30h
mov ah,02h
int 21h
ret
dec_div endp
;*****************************************************************************。
crlf proc near
mov dl,0ah ;换行。
mov ah,02h 。
int 21h ;调用dos,显示dl里的内容。
mov dl,0dh ;回车。
mov ah,02h
int 21h
ret
crlf endp
;*****************************************************************************。
clear proc near。
push ax。
push bx。
push cx。
push dx。
mov ah,6 ;调用屏幕初始化或上卷功能。
mov al,0 ;使全屏幕为空白。
mov bh,7 。
mov ch,0。
mov cl,0 ;规定上卷的范围为从左上角(0,0)至右下角(24,79)
mov dh,24。
mov dl,79。
int 10h ;BIOS显示中断调用。
pop dx。
pop cx。
pop bx。
pop ax。
ret
clear endp
;*****************************************************************************。
prognam ends
END START
end
NUM EQU 30H
UP EQU P3.6
DN EQU P3.7
ORG 0000H
AJMP START ;Fosc=12MHz。
ORG 000BH ;T0 中断入口地址。
AJMP INT_T0
ORG 001BH ;T1 中断入口地址。
AJMP INT_T1
START:
MOV SP, #60H
MOV TMOD, #11H
MOV IE, #8AH
MOV IP, #08H ;T1中断优先于T0中断。
MOV TH1, #3CH
MOV TL1, #0BH ;以上为系统初始化,T=60ms。
W1: MOV P2, #01110001B ;等待提示"F" ,01110001。
LCALL GETKEY
CJNE A, #0FFH, W1 。
MOV A, B
CJNE A, #0AH, W2。
LCALL KEY_A ;输入键是'A',转KEY_A。
SJMP W1
W2: CJNE A, #0BH, W3。
LCALL KEY_B ;输入键是'B',转KEY_B。
W3: CJNE A, #0CH, W4。
LCALL KEY_C ;输入键是'C',转KEY_C。
W4: CJNE A, #0DH, W5。
LCALL KEY_D
SJMP W1 ;输入键是'D',转KEY_D。
W5: CJNE A,#0EH,W6 ;下一首。
INC NUM
MOV A,NUM
CJNE A,#4,W51
W51:
JC W52
MOV NUM,#0
W52:
MOV A,NUM
SJMP D0
W6: CJNE A,#0FH,W7 ;上一首。
MOV A,NUM
JNZ W61
MOV NUM,#4
W61:
DEC NUM
MOV A,NUM
SJMP D0
W7:
SJMP W1
KEY_A: ;从1~4按顺序播放。
LCALL MUSIC1 ;乐曲《我和你》
LCALL MUSIC2 ;乐曲《万水千山总是情》
LCALL MUSIC3 ;乐曲《送别》
LCALL MUSIC4 ;乐曲《北京欢迎您》
RET
KEY_B: ;从1~4循环播放。
T11: LCALL KEY_A。
SJMP T11
RET
KEY_C: ;循环播放某一乐曲。
T3: LCALL GETWORD。
CJNE A, #0FFH, T3。
MOV A, B
D0:
JNZ D1
SJMP E0
D1: DEC A
JNZ D2
SJMP E1
D2: DEC A
JNZ E3
SJMP E2
E0: LCALL MUSIC1 ;乐曲《我和你》
SJMP E0
E1: LCALL MUSIC2 ;乐曲《万水千山总是情》
SJMP E1
E2: LCALL MUSIC3 ;乐曲《送别》
SJMP E2
E3: LCALL MUSIC4 ;乐曲《北京欢迎您》
SJMP E3
RET
KEY_D: ;从某一乐曲开始播放,播放完后停止。
T2: LCALL GETWORD。
CJNE A, #0FFH, T2。
MOV A, B
CJNE A, #00H, B1。
SJMP C0
B1: CJNE A, #01H, B2。
SJMP C1
B2: CJNE A, #02H, C3。
SJMP C2
C0: LCALL MUSIC1 ;乐曲《我和你》
C1: LCALL MUSIC2 ;乐曲 《万水千山总是情》 。
C2: LCALL MUSIC3 ;乐曲《送别》
C3: LCALL MUSIC4 ;乐曲《北京欢迎您》
RET
MUSIC1: ;第一首《我和你》
MOV P2, #00000110B ;显示1,00000110。
MOV R5, #11111001B。
MOV 52H, #HIGH TABLE10。
MOV 53H, #LOW TABLE10。
MOV NUM,#0
LCALL music
RET
MUSIC2: ;第二首《万水千山总是情》
MOV P2, #01011011B ;显示2,01011011。
MOV R5, #10100100B 。
MOV 52H, #HIGH TABLE20。
MOV 53H, #LOW TABLE20 。
MOV NUM,#1
LCALL music。
RET
MUSIC3: ;第三首《送别》
MOV P2, #01001111B ;显示3,01001111。
MOV R5, #10110000B。
MOV 52H, #HIGH TABLE30。
MOV 53H, #LOW TABLE30 。
MOV NUM,#2
LCALL music。
RET
MUSIC4: ;第四首《北京欢迎您》
MOV P2, #01100110B ;显示4,01100110。
MOV R5, #10011001B。
MOV 52H, #HIGH TABLE40。
MOV 53H, #LOW TABLE40 。
MOV NUM,#3
LCALL music。
RET
music: MOV R3,#00H ;音乐解码器。
NEXT20:
MOV A,P3
ORL A,#0C0H
MOV P3,A
MOV A,P3
CPL A
ANL A,#0C0H
JZ NEXT21
POP ACC
POP ACC
LJMP W1
RET
NEXT21:
MOV A, R3。
MOV DPH, 52H。
MOV DPL, 53H。
MOVC A, @A+DPTR。
MOV R2, A
JZ STOP
ANL A, #0FH
MOV R1, A
MOV A, R2
SWAP A
ANL A, #0FH
JNZ SING
CLR TR0
JMP W11
;----------------------------------------------------------。
SING:
DEC A
MOV 22H, A
RL A
MOV DPTR, #TABLE00。
MOVC A, @A+DPTR。
MOV TH0, A
MOV 21H, A
MOV A, 22H
RL A
INC A
MOVC A, @A+DPTR。
MOV TL0, A
MOV 20H, A
SETB TR0
SETB TR1
W11:
LCALL DELAY3
INC R3
LJMP NEXT20
;-----------------------------------------------------------。
STOP:
CLR TR0
CLR TR1
RET
;***************************************************。
;定时器0中断子程序
;***************************************************。
INT_T0:
CLR TR0
MOV TL0, 20H
MOV TH0, 21H
CPL P3.0
SETB TR0
RETI
;***************************************************。
;定时器1中断子程序
;***************************************************。
INT_T1:
CLR TR1
CLR TR0
LCALL KEY_E
MOV TH1, #3CH。
MOV TL1, #0BH。
DJNZ 60H, OUT。
MOV 60H, #20。
OUT:
SETB TR1
RETI 。
KEY_E:
JB P3.1, L2 ;中断键盘检测。
LCALL DELAY2 ;消除抖动。
JB P3.1, L2 ;如果是高电平就跳到L2。
JNB P3.1, $ ;如果仍然是低电平就执行中断程序。
MOV P2, #0111100B ;让LED显示E,01111001。
L3: JB P3.1, $ ;检测低电平,直到低电平时才跳出该指令。
LCALL DELAY2
JB P3.1, L3
JNB P3.1, $ ;如果再来一个高电平才跳出中断。
MOV P2,R5
L2: SETB TR0
RET
GETKEY: ;读A B C D键盘子程序 。
SA: JB P1.0, SB ;读A,是高电平表示没有按键,跳转到SB。
LCALL DELAY2
JB P1.0, SA
JNB P1.0, $
MOV P2, #01110111B ;显示A,01110111。
MOV R5, #10001000B。
MOV A, #0FFH
MOV B, #0AH
RET
SB: JB P1.1, C11 ;读B,是高电平表示没有按键按下,跳转到C11。
LCALL DELAY2
JB P1.1, SB
JNB P1.1, $
MOV P2, #01111100B ;显示B,01111100。
MOV R5, #10000011B。
MOV A, #0FFH
MOV B, #0BH
RET
C11:JB P1.2, ED1 ;读C。
LCALL DELAY2
JB P1.2, C11
JNB P1.2, $
MOV P2, #00111001B ;显示C,00111001。
MOV R5, #11000110B。
MOV A, #0FFH
MOV B, #0CH
RET
ED1:
JB P1.3, L0 ;读D。
LCALL DELAY2
JB P1.3, ED1
JNB P1.3, $
MOV P2, #01011110B ;显示D,01011110。
MOV R5, #10100001B。
MOV A, #0FFH
MOV B, #0DH
L0: JB UP,L01
LCALL DELAY2
JB UP,L01
JNB UP,$
MOV A,#0FFH
MOV B,#0EH
RET
L01:
JB DN,L02
LCALL DELAY2
JB DN,L02
JNB DN,$
MOV A,#0FFH
MOV B,#0FH
L02:
RET
GETWORD: ;读音乐序号子程序。
S1: JB P1.4, S2 ;读1键。
LCALL DELAY2
JB P1.4, S1
JNB P1.4, $
MOV P2, #00000110B ;显示1。
MOV R5, #11111001B。
MOV A, #0FFH
MOV B, #00H
RET
S2: JB P1.5, S3 ;读2键 。
LCALL DELAY2
JB P1.5, S2
JNB P1.5, $
MOV P2, #01011011B ;显示2。
MOV R5, #10100100B。
MOV A, #0FFH
MOV B, #01H
RET
S3: JB P1.6,S4 ;读3键。
LCALL DELAY2
JB P1.6,S3
JNB P1.6,$
MOV P2,#01001111B ;显示3。
MOV R5,#10110000B。
MOV A,#0FFH
MOV B,#02H
RET
S4: JB P1.7, L1 ;读4键。
LCALL DELAY2
JB P1.7, S1
JNB P1.7, $
MOV P2, #01100110B ;显示4。
MOV R5, #10011001B。
MOV A, #0FFH
MOV B, #03H
L1: RET
DELAY: ;延时子程序。
PUSH 0 ;保存现场。
PUSH 1。
MOV 0, #0H。
DELAY1: MOV 1, #0H。
DJNZ 1, $。
DJNZ 0, DELAY1。
POP 1 ;恢复现场。
POP 0。
RET
DELAY2: MOV 41H, #100 ;延时子程序2。
F1: MOV 42H, #250。
DJNZ 42H, $
DJNZ 41H, F1
RET
DELAY3: ;延时子程序3 。
MOV R7, #2
W22: MOV R4, #125。
W33: MOV R0, 248。
DJNZ R0, $
DJNZ R4, W33
DJNZ R7, W22
DJNZ R1, DELAY3。
RET
TABLE00: ;频率表。
DW 64260,64400,64524,64580 ;简码值 低音5, 低音6, 低音7,1。
DW 64684,64777,64820,64898 ; 简码值 2,3,4,5。
DW 64968,65030,65058,65110 ; 简码值 6,7,高音1,高音。
DW 65157,65178,65217 ;简码值 高音3,高音4,高音5。
;--------------------------------------------------------------------。
;第一首《我和你》
;--------------------------------------------------------------------。
TABLE10: DB 64H,82H,42H,48H。
DB 54H,64H,18H。
DB 44H,54H,64H,84H。
DB 5CH
DB 64H,84H,44H,04H,42H。
DB 54H,64H,28H。
DB 54H,14H,54H,64H。
DB 4CH
DB 98H,88H
DB 98H,48H
DB 64H,24H,64H,84H。
DB 5CH
DB 64H,82H,42H,48H。
DB 54H,64H, 28H。
DB 54H,14H,54H,34H。
DB 4CH
DB 00H
;--------------------------------------------------------------------。
;第二首《万水千山总是情》
;--------------------------------------------------------------------。
TABLE20: DB 64H,74H,84H,04H,82H,94H,84H,6CH。
DB 54H,44H,04H,62H,54H,44H,2CH。
DB 24H,18H, 44H,54H,64H,84H,94H,64H,5CH。
DB 64H,74H,84H,04H,82H,94H,84H,6CH。
DB 54H,44H,04H,62H,54H,44H,2CH。
DB 24H,18H, 44H,64H,54H,04H,42H,24H,44H,4CH。
DB 64H,84H,9CH,0A4H,94H,74H,84H,04H,92H,8CH,64H,88H。
DB 64H,84H,9CH,0A4H,0A4H,94H,84H,64H,5CH。
DB 64H,74H, 84H,04H,82H,94H,84H,6CH。
DB 54H,44H,04H,62H,54H,44H,2CH。
DB 24H,18H,44H,64H,54H,42H,24,44H,4CH。
DB 00H
;--------------------------------------------------------------------。
;第三首《送别》
;--------------------------------------------------------------------。
TABLE30: DB 84H,62H,82H,0B8H。
DB 94H,0B2H,92H,88H。
DB 84H,42H,52H,64H,52H,44H。
DB 5CH。
DB 84H,62H,82H,0B4H,04H,82H。
DB 94H,0B4H, 88H。
DB 84H,52H,62H,74H,04H,32H。
DB 4CH
DB 94H,0B4H,0B8H。
DB 0A4H,92H,0A2H,0B8H。
DB 92H,0A2H,0B2H,92H,92H,82H,62H,42H。
DB 5CH
DB 84H,62H,82H,0B4H,04H,0A2H。
DB 94H,0B4H,88H。
DB 84H,52H,62H,74H,04H,32H。
DB 4CH
DB 00H
;--------------------------------------------------------------------。
;第四首《北京欢迎您》
;--------------------------------------------------------------------。
TABLE40: DB 62H,82H,62H,52H,12H。
DB 62H,52H,12H,64H。
DB 62H,52H,22H,42H 。
DB 62H,54H
DB 52H,42H,22H,42H。
DB 52H,62H,82H,52H。
DB 62H,92H,82H,12H。
DB 52H,44H
DB 52H,42H,22H,42H。
DB 52H,62H,82H,52H。
DB 62H,92H,82H,82H。
DB 68H
DB 52H,62H,52H,42H。
DB 82H,92H,64H。
DB 22H,62H,64H。
DB 54H,64H
DB 64H,84H
DB 0B2H,82H,94H。
DB 02H,92H,82H,62H。
DB 62H, 82H,88H 。
DB 00H
END
一 SNMP协议介绍 简单网络管理协议(SNMP:Simple Network Management Protocol)是由互联网工程任务组(IETF:Internet Engineering Task Force )定义的一套网络管理协议。该协议基于简单网关监视协议(SGMP:Simple Gateway Monitor Protocol)。利用SNMP,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。虽然SNMP开始是面向基于IP的网络管理,但作为一个工业标准也被成功用于电话网络管理。 1. SNMP基本原理 SNMP采用了Client/Server模型的特殊形式:代理/管理站模型。对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。每个SNMP从代理负责回答SNMP管理工作站(主代理)关于MIB定义信息的各种查询。下图10是NMS公司网络产品中SNMP协议的实现模型。 图10 SNMP代理和管理站通过SNMP协议中的标准消息进行通信,每个消息都是一个单独的数据报。SNMP使用UDP(用户数据报协议)作为第四层协议(传输协议),进行无连接操作。SNMP消息报文包含两个部分:SNMP报头和协议数据单元PDU。数据报结构如下图11。 图11 版本识别符(version identifier):确保SNMP代理使用相同的协议,每个SNMP代理都直接抛弃与自己协议版本不同的数据报。 团体名(Community Name):用于SNMP从代理对SNMP管理站进行认证;如果网络配置成要求验证时,SNMP从代理将对团体名和管理站的IP地址进行认证,如果失败,SNMP从代理将向管理站发送一个认证失败的Trap消息(见后); 协议数据单元(PDU):其中PDU指明了SNMP的消息类型及其相关参数。 2. 管理信息库MIB IETF规定的管理信息库MIB(由中定义了可访问的网络设备及其属性,由对象识别符(OID:Object Identifier)唯一指定。MIB是一个树形结构,SNMP协议消息通过遍历MIB树形目录中的节点来访问网络中的设备。 下图给出了NMS系统中SNMP可访问网络设备的对象识别树(OID:Object Identifier)结构。 图12 下图13给出了对一个DS1线路状态进行查询的OID设置例子。 图13 图14中左图给出了RFC2495对DS1/E1中继线的MIB信息树图,右图是NMS系统中对机架Chassis管理MIB约定。 点击查看 图14 3. SNMP的五种消息类型 SNMP中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request、Trap。 Get-Request 、Get-Next-Request与Get-Response SNMP管理站用Get-Request消息从拥有SNMP代理的网络设备中检索信息,而SNMP代理则用Get-Response消息响应。Get-Next-Request用于和Get-Request组合起来查询特定的表对象中的列元素。如: 首先通过下面的原语获得所要查询的设备的接口数: {iso org(3) dod(6) internet(1) mgmt(2) mib(1) interfaces(2) ifNumber(2)} 然后再通过下面的原语,进行查询(其中第一次用Get-Request,其后用Get-Next-Request): {iso org(3) dod(6) internet(1) mgmt(2) mib(1) interfaces(2) ifTable(2)} Set-Request SNMP管理站用Set-Request 可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)。 Trap SNMP代理使用Trap向SNMP管理站发送非请求消息,一般用于描述某一事件的发生。 可查看链接: http://baike.baidu.com/view/2899.html?wtp=tt。