① 設單片機系統如何編寫一個完整的C51程序使P1.6和P1
設單片機系統編寫一個完整的C51程序使P1.6和P1,可以使用正確編碼加上解壓即可。
② 求51單片機蜂鳴器音樂匯編語言,兩只老虎的
ORG
0000H
AJMP
MAIN
ORG
000BH
AJMP
T0INT
ORG
0050H
MAIN:
MOV
TMOD,#01H
MOV
IE,#82H
Again:
MOV
DPTR,#TAB;表首地址
LOOP:
CLR
A
MOVC
A,@A+DPTR
MOV
R2,A
;時間高位
INC
DPTR
CLR
A
MOVC
A,@A+DPTR
MOV
R3,A;時間低位
2
ORL
A,R2
JZ
STOP
MOV
A,R2
ANL
A,R3
CJNE
A,#0FFH,NEXT
AJMP
Again
NEXT:
MOV
TH0,R2
MOV
TL0,R3
SETB
TR0
NEXT1:
CLR
A
INC
DPTR
MOVC
A,@A+DPTR
MOV
P1,A;字形碼顯示
3
CLR
A
INC
DPTR
MOVC
A,@A+DPTR;
延時常數
4
DEL:
MOV
R5,
2
DEL0:
MOV
R6
,#250
DEL1:
MOV
R7,
#248
NOP
DEL2:
DJNZ
R7,
DEL2
DJNZ
R6,DEL1
DJNZ
R5,DEL0
CLR
TR0
INC
DPTR;下一個音節
LJMP
LOOP
STOP:
AJMP
NEXT1
T0INT:
PUSH
A
PUSH
PSW
PUSH
DPH
PUSH
DPL
CPL
P3.0;音頻取反
MOV
TH0,R2
MOV
TL0,R3
SETB
TR0
POP
DPL
POP
DPH
POP
PSW
POP
A
RETI
TAB:
DB
在TAB後把簡譜打上
③ 編寫一個完整的單片機C51程序
#include<reg51.h>
sbit led=P1^0; //單片機管腳位聲明
void main()
{
TMOD=0x01; //定時器TO工作在方式1
TH0=(65536-5000)/256; //裝初值,12M晶振 1為1us; 5000為5000us=5ms;
TL0=(65536-5000)%256;
EA =1; //開總中斷
ET0=1; //開定時器TO中斷
TR0=1; //啟動定時器
P1=0; //初始化P1口
while(1) ; //程序在這里等待中斷發生
}
void T0_time() interrupt 1
{
unsigned char num;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
num++;
if(num==100) //0.5S (1s閃爍1次==0.5S亮0.5S滅)
{
num=0;
led=~led; //led狀態取反
}
}
④ 用C51單片機如何編程出兩只老虎這首歌曲(要用C語言編程)
用T0/T1,一個用於頻率控制(音調),一個控制時長(節奏)