⑴ 設單片機系統如何編寫一個完整的C51程序使P1.6和P1
設單片機系統編寫一個完整的C51程序使P1.6和P1,可以使用正確編碼加上解壓即可。
⑵ 使用C51編寫程序實現如下功能,將40H~4FH共16個RAM單元的信息初始化為30H,要求
char * pRam; /毀李空/定義一個指針
pRam = 0x40; //賦地址給一個指纖瞎針
然擾鉛後
for(i=0;i<0x10;i++)
( *(pRam+i) = 0x30;}
就是了
⑶ 單片機C51語言中用switch語句來實現,怎麼寫這個功能
switch((left<蠢宏帶<4)|right)
{
case 0x00:led_left=1;led_right=1;break;
帶蘆絕遲 case 0x01:led_left=0;led_right=1;break;
case 0x10:led_left=1;led_right=0;break;
case 0x11:led_left=1;led_right=1;break;
}
⑷ 試用C51及匯編語言編程序,實現將50H至5FH共16個RAM單元初始化為「a8」的功能
匯編程序如下:
MOV50H,#0A8H
MOV51H,#0A8H
MOV52H,#0A8H
。。。 。。。共 16 行,你補齊即可。
MOV5FH,#0A8H
END
⑸ 怎麼用c語言/C51程序實現單片機按鍵長按開機與長按關機
1.
首先需要硬體支持,也就是單片機某個引腳可以控制斷電和維持上電
2.
按鍵的的作用也可以給單片機供電,並且還要有個專門的引腳檢激咐測按鍵狀態逗鉛仿。
3.
軟體:首先是長按判斷。這個最好用按鍵掃描。就是檢測按鍵按下時候,定時器計時,如果松開就立即清零。在設置一個功能函數檢測定時值,大於兩秒後,就表示長按。
4.
按鍵按下單片機供電開始計時,如果達到長按標准,就輸出引腳控制持續供電,這時候按鍵鬆了也不會斷電。
5.
運行期間,按鍵再次按下並符合長按,那木引腳輸出停止供電,這時候如果按鍵松開,那就徹底沒電關山纖機。
⑹ 試用51單片機C51編寫一電腦鍾程序,定時器用方式2中斷處理實現
第一問比較簡單,拓展功能比較繁瑣,要考慮閏年的影響,計算復雜一些。
以下是簡單的時鍾:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a=0;//中斷次數
uchar sec=0,min=0,hour=0;//時分秒
uchar date=1,mon=1, year=19;//年月日,年只計算後2 位,如2019,只考慮19
uchar tablemon[12]={31,28,31,30,31,30,31,31,30,31,30,31};//每月有多少握臘臘天,2月按28天考慮
void main(void )//主程序
{
TMOD=0x01;// 定時器0工作方式一,方式2一次只能定時256us,中斷太頻繁 ,不建議段滑使用
ET0=1;
EA=1;
TH0=(65536-50000)/256;//定時50ms
TL0=(65536-50000)%256;
TR0=1;
while(1)
{ dislpay();}//顯示子程序,與硬體連接有關
}
//中斷局好子程序
void Timer0(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
if(a==20) {a=0;sec++;}//20次是1秒
if(sec==60) {sec=0;min++;}
if(min==60) {min=0;hour++;}
if(hour==24){hour=0;date++;}
if(date>tablemon[ mon-1]){date=1;mon++;}
if(mon==13){mon=1;year++;}
}
⑺ 單片機,c51匯編語言編寫程序
SUBDATA:
CLRC
MOVA,41H
SUBBA,43H
MOVA,40H
SUBBA,42H
JCSUBD1
MOV44H,40H
MOV45H,41H
MOV46H,42H
MOV47H,43H
RET
SUBD1:
MOV44H,42H
MOV45H,43H
MOV46H,40H
MOV47H,41H
RET
⑻ C51單片機怎麼用C語言實現數值的開方和平方運算
C51是基於標準的C語言擴展而來的,所以,標准C語言能做的東西,C51也可以。
平方運算,自不必說,就是兩個數相模歲乘:
例如:float a,b,c; c = a*b;
開方,則需要用到庫函數:
標准c語言里用的如碼虧是 sqrt()函數,這個函數包含在math.h文件中。
所以:
#include <math.h>
c = sqrt(a);
就渣神可以了
⑼ 用C51語言寫一個完整的程序,實現將內部RAM地址40H和50H單元相加,保存到60H存儲單元!~
#include<陸森臘悔reg51.h>早局畝
sfr xda=0x40;
sfr yda=0x50;
sfr rel=0x60;
main()
{
rel=xda+yda;
while(1){};
}
⑽ 試用C51語言編寫將0-9,A-F轉換成相應的ASII碼程序,求大神解答,最好能有點注釋,謝謝!!
轉換ASCII沒什麼東西ASCII碼中0對應值0x301對應0x31依次
直接算就行了所以這個程序寫成來是沒什麼注釋寫的
//1位16進制值轉ASCII
unsignedcharhextoASCII(unsigned型沖chara)
{
if(a<9)
{
returna+0x30;
}
else
{
租租謹弊基returna+0x41;
}
}