作業紀錄一下,可能不是最好的寫法
題目是這樣的
讓板子上的LED燈以1->5->9->13、2->6->10->14、3->7->11->15、4->8->12->16->1....一直LOOP
//其中P0是表示板子上面那排LED,P1是下面的
//P1=255表示下面LED全暗,防止上下都有LED亮的情形
//P0=254也可寫成0xfe
//P0=239也可寫成0xef
|
C的另一種寫法(使用左移右移)
因為題目的要求是第1圈(1、5、9、13),第二圈(2、6、10、14)...
P07 <----- P01 P07 <----- P01
假設 P0=0000_0001 亮第一顆 P0=0001_0000 亮第五顆
**要從後面往前看,後面才是低位元**
所以使用左移可以達到需求,左移之後再取補數(~),
P01亮 = 0xfe = ~0000_0001
再加上delay讓他產生延遲,才會看到他亮
亮完之後要在取一次補數,因為之後還會再使用左(右)移,
**左右移完是補一個0進來**
所以在P0這排led使用 左移,到P1這排時使用 右移
P1會改成使用右移是因為,題目設計第9顆LED是P17,而不是P10,所以方向相反
8051組合語言
1.CALL有分ACALL 、 LCALL ,主要差在跳躍範圍跟吃得容量
(LCALL跳躍範圍跟佔的容量都比較多)
2.CJMP就是compare jmp 比較完後跳躍
3.DJNZ是Dec(減1)後,等於0的話就跳到指定位址
8051跟x86的寫法有些地方,會有小不同,
可以到網路上8051的語法
大概是這樣,可能不是最好的寫法,僅供參考
如果需要文字檔可以私我
寫完後才發現,字有夠不清楚,都被背景蓋到= =