1樓:
#include
#define uchar unsigned char
uchar i,s=0;
uchar code dm=; //led**
uchar jw=0; //led數字儲存
void delay_ms(unsigned int ms) //延時
unsigned int i;
unsigned char j;
for(i=0;ifor(j=0;j<200;j++);
for(j=0;j<102;j++);
void button(void) //開關加減函式
uchar key;
p3=0xff;
if(p3!=0xff)
void main()
while(1){
p0=dm[jw];
button(); //led顯示
這個就是完整版的控制一個led的c語言程式,
p0接八位數碼管(七位也行),我用的共陽極管,
p3的0和1埠(兩個低位)接2個按鈕,
採納後求積分啊。。。。。
2樓:做而論道
為樓上電路增加一份彙編程式。
org 0
start:
mov r1, #0 ;從0開始計數.
;----------------------------------
disp:
mov a, r1 ;
mov dptr, #tab
movc a, @a + dptr ;取段碼.
mov p0, a ;送p1口顯示.
;----------------------------------
k_1:
jb p3.0, k_2 ;判斷k1是否按下.
call delay10ms ;若按下,則延時10ms左右.
jb p3.0, k_2 ;再判斷k1是否按下.
inc r1 ;若真按下,則加一.
jnb p3.0, $ ;等待釋放.
cjne r1, #10, disp
mov r1, #0
sjmp disp
;----------------------------------
k_2:
jb p3.1, k_1 ;判斷k2是否按下.
call delay10ms ;若按下,則延時10ms左右.
jb p3.1, k_1 ;再判斷k2是否按下.
dec r1 ;若真按下,則減一.
jnb p3.1, $ ;等待釋放.
cjne r1, #255, disp
mov r1, #9
sjmp disp
;----------------------------------
delay10ms:
mov r6, #20 ;延時10ms子程式.
l1:mov r7, #248
djnz r7, $
djnz r6, l1
ret;----------------------------------
tab:
db 0xc0,0xf9,0xa4,0xb0,0x99
db 0x92,0x82,0xf8,0x80,0x90
;----------------------------------end
3樓:
用定時器寫的,也是c51程式,要不?
微控制器 一個按鈕設定按一下加1 另一個按鍵按一下減1 求幫忙編寫程式
4樓:
#include
#define uchar unsigned char#define uint unsigned intsbit k1 = p1^4;
sbit k2 = p1^5;
uchar data k1state;
uchar data k2state;
uint data num,ntmp;
uchar code table= ;
uchar data showindex,indextmp;
uchar data w[8];
void delay(uint z)
void main()
p0 = (0x01<=8)
showindex=0;}}
看了你的全圖,修改後了,用keil uvision 3或4都可以,編譯後可以檢視對應的彙編**
程式稍大一點的,不會有人用匯編來給你蘑菇,彙編設計寫編碼太慢了,開發代價不值得
5樓:匿名使用者
學微控制器 先學c語言 學深了 再學彙編 這樣更好上手
6樓:匿名使用者
sbit k=p1^5;
sbit m=p1^6;
int p=0;
while(1)
7樓:匿名使用者
求剩餘下面的圖 做邊接到什麼了???
51微控制器怎麼用矩陣鍵盤讓數碼管加一減一,就是每兩個鍵盤控制一個數
8樓:匿名使用者
#include
#define uchar unsigned char#define uint unsigned intsbit key1=p1^0;
sbit key2=p1^1;
uchar num=0;
//共陰數碼管七段碼
uchar code table=;
void delay1ms(uint i) //1ms延時程式}}void main(void )//主程式}if(key2==0)//判斷按鍵2是否按下}p0=table[num];}}
兩個微控制器UART通訊不能正常進行
自由飛翔就是我 微控制器串列埠可以在115.2k可靠傳輸,不要懷疑波特率,如果你的波特率計算真的沒有錯誤的話 從你的條件不會退出能通訊的結果,肯定有的細節你沒有說明,不知是什麼 如果真的如你所說,只能讓一片微控制器不斷的發,示波器監視傳送是否正常 串列埠助手給另一片微控制器發資料,看接受是否正常,一...
微控制器中兩個for語句是如何執行的
寒冬為雪 這兩個for語句相同。是起一個延時的作用,最初i 0,i 0 30000,繼續執行,i 即i自加1為i 1,然後i 1,i 1 300000,繼續執行i 直到i 30000跳出for語句,這個過程微控制器執行需要時間,就起到了一個延時的作用。 懂你的大佬 揭靈韻 這個很重要,第一,如果是編...
51微控制器同時使用兩個計時器的問題
同時用兩個中斷肯定會衝突 定時器1完全可以不用,主程式只管顯示就行,定時器0中斷程式中更新計時數值 還可以嘗試在定時器0的中斷程式裡關閉定時器1,交且將定時器0的中斷優先順序設高 就你現在的程式可以正常掃描顯示的呀,就是有點閃爍的效果。但不知道,這是和誰學習的,數碼管顯示要用定時器定時,中斷一次顯示...