?? main.lss
字號:
PORTD|=_BV(DQ);
136: 93 9a sbi 0x12, 3 ; 18
dat>>=1;
138: c6 95 lsr r28
13a: 11 50 subi r17, 0x01 ; 1
13c: 99 f7 brne .-26 ; 0x124
13e: cf 91 pop r28
140: 1f 91 pop r17
142: 08 95 ret
00000144 <Read_Temperature>:
}
}
/*********************************************************/
/* */
/* 讀取溫度 */
/* */
/*********************************************************/
void Read_Temperature(uchar x)
{
144: 0f 93 push r16
146: 1f 93 push r17
148: cf 93 push r28
14a: df 93 push r29
14c: 08 2f mov r16, r24
uchar i;
Init_DS18B20();
14e: b2 df rcall .-156 ; 0xb4
if(presence==1)
150: 80 91 d4 00 lds r24, 0x00D4
154: 81 30 cpi r24, 0x01 ; 1
156: 11 f4 brne .+4 ; 0x15c
{ beep();}
158: 8f df rcall .-226 ; 0x78
15a: 23 c0 rjmp .+70 ; 0x1a2
else
{
WriteOneChar(0xCC); // 跳過讀序號列號的操作
15c: 8c ec ldi r24, 0xCC ; 204
15e: de df rcall .-68 ; 0x11c
WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換
160: 84 e4 ldi r24, 0x44 ; 68
162: dc df rcall .-72 ; 0x11c
Init_DS18B20();
164: a7 df rcall .-178 ; 0xb4
// WriteOneChar(0xCC); //跳過讀序號列號的操作
WriteOneChar(0x55); //匹配ROM命令
166: 85 e5 ldi r24, 0x55 ; 85
168: d9 df rcall .-78 ; 0x11c
16a: c0 e0 ldi r28, 0x00 ; 0
16c: d0 e0 ldi r29, 0x00 ; 0
16e: 17 e0 ldi r17, 0x07 ; 7
for(i=0;i<8;i++)
{
WriteOneChar(RomCode[x][i]);
170: e0 2f mov r30, r16
172: ff 27 eor r31, r31
174: 33 e0 ldi r19, 0x03 ; 3
176: ee 0f add r30, r30
178: ff 1f adc r31, r31
17a: 3a 95 dec r19
17c: e1 f7 brne .-8 ; 0x176
17e: ec 0f add r30, r28
180: fd 1f adc r31, r29
182: ec 55 subi r30, 0x5C ; 92
184: ff 4f sbci r31, 0xFF ; 255
186: 80 81 ld r24, Z
188: c9 df rcall .-110 ; 0x11c
18a: 11 50 subi r17, 0x01 ; 1
18c: 21 96 adiw r28, 0x01 ; 1
18e: 17 ff sbrs r17, 7
190: ef cf rjmp .-34 ; 0x170
}
WriteOneChar(0xBE); //讀取溫度寄存器
192: 8e eb ldi r24, 0xBE ; 190
194: c3 df rcall .-122 ; 0x11c
temp_data[0] = ReadOneChar(); //溫度低8位
196: ac df rcall .-168 ; 0xf0
198: 80 93 d1 00 sts 0x00D1, r24
temp_data[1] = ReadOneChar(); //溫度高8位
19c: a9 df rcall .-174 ; 0xf0
19e: 80 93 d2 00 sts 0x00D2, r24
1a2: df 91 pop r29
1a4: cf 91 pop r28
1a6: 1f 91 pop r17
1a8: 0f 91 pop r16
1aa: 08 95 ret
000001ac <lcd_busy>:
}
}
/*************************************************************/
/* */
/* LCD初始化設(shè)定 */
/* */
/*************************************************************/
void lcd_init(void)
{
DDRA=0XFF; //設(shè)置PA輸出
PORTA=0XFF; //全部加上上拉電阻
DDRC=0XFF; //設(shè)置PC為輸出
PORTC=0XFF; //全部加上上拉電阻
delay_nms(30); //等待上電穩(wěn)定
lcd_wcmd(0x38,0); //16*2顯示,5*7點陣,8位數(shù)據(jù)
delay_nms(5);
lcd_wcmd(0x38,0); //不進行忙檢測
delay_nms(5);
lcd_wcmd(0x38,0);
delay_nms(5);
lcd_wcmd(0x0c,1); //顯示開,關(guān)光標(biāo)
delay_nms(5);
lcd_wcmd(0x06,1); //移動光標(biāo)
delay_nms(5);
lcd_wcmd(0x01,1); //清除LCD的顯示內(nèi)容
delay_nms(5);
}
/*******************************************************************/
/* */
/*寫指令數(shù)據(jù)到LCD */
/*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。 */
/*command為指令,wait_en指定是否要檢測LCD忙信號 */
/* */
/*******************************************************************/
void lcd_wcmd(uchar command,uchar wait_en)
{
if(wait_en) //若wait_en為1,則要檢測LCD忙信號
lcd_busy();
PORTC &=~_BV(LCD_RS);
PORTC &=~_BV(LCD_RW);
PORTC &=~_BV(LCD_EN);
PORTA =command; //送指令數(shù)據(jù)
PORTC |=_BV(LCD_EN);
_NOP();
_NOP();
PORTC &=~_BV(LCD_EN);
}
/*******************************************************************/
/* */
/*寫顯示數(shù)據(jù)到LCD */
/*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。 */
/* */
/*******************************************************************/
void lcd_wdat(uchar dat)
{
lcd_busy();
PORTC |=_BV(LCD_RS);
PORTC &=~_BV(LCD_RW);
PORTC &=~_BV(LCD_EN);
PORTA=dat; //送顯示數(shù)據(jù)
PORTC |=_BV(LCD_EN);
_NOP();
_NOP();
PORTC &=~_BV(LCD_EN);
}
/*************************************************************/
/* */
/*檢查LCD忙狀態(tài) */
/*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數(shù)據(jù) */
/* */
/*************************************************************/
void lcd_busy(void)
{
DDRA &=~_BV(busy); //設(shè)置busy口為輸入
1ac: d7 98 cbi 0x1a, 7 ; 26
PORTC &=~_BV(LCD_RS);
1ae: a8 98 cbi 0x15, 0 ; 21
PORTC |= _BV(LCD_RW);
1b0: a9 9a sbi 0x15, 1 ; 21
PORTC |= _BV(LCD_EN);
1b2: aa 9a sbi 0x15, 2 ; 21
while(PINA & _BV(busy)); //忙等待
1b4: cf 99 sbic 0x19, 7 ; 25
1b6: fe cf rjmp .-4 ; 0x1b4
PORTC &=~_BV(LCD_EN);
1b8: aa 98 cbi 0x15, 2 ; 21
DDRA|=_BV(busy); //設(shè)置busy口為輸出
1ba: d7 9a sbi 0x1a, 7 ; 26
1bc: 08 95 ret
000001be <lcd_wcmd>:
1be: cf 93 push r28
1c0: c8 2f mov r28, r24
1c2: 61 11 cpse r22, r1
1c4: f3 df rcall .-26 ; 0x1ac
1c6: a8 98 cbi 0x15, 0 ; 21
1c8: a9 98 cbi 0x15, 1 ; 21
1ca: aa 98 cbi 0x15, 2 ; 21
1cc: cb bb out 0x1b, r28 ; 27
1ce: aa 9a sbi 0x15, 2 ; 21
1d0: 00 00 nop
1d2: 00 00 nop
1d4: aa 98 cbi 0x15, 2 ; 21
1d6: cf 91 pop r28
1d8: 08 95 ret
000001da <lcd_init>:
1da: 8f ef ldi r24, 0xFF ; 255
1dc: 8a bb out 0x1a, r24 ; 26
1de: 8b bb out 0x1b, r24 ; 27
1e0: 84 bb out 0x14, r24 ; 20
1e2: 85 bb out 0x15, r24 ; 21
1e4: 8e e1 ldi r24, 0x1E ; 30
1e6: 90 e0 ldi r25, 0x00 ; 0
1e8: 37 df rcall .-402 ; 0x58
1ea: 60 e0 ldi r22, 0x00 ; 0
1ec: 88 e3 ldi r24, 0x38 ; 56
1ee: e7 df rcall .-50 ; 0x1be
1f0: 85 e0 ldi r24, 0x05 ; 5
1f2: 90 e0 ldi r25, 0x00 ; 0
1f4: 31 df rcall .-414 ; 0x58
1f6: 60 e0 ldi r22, 0x00 ; 0
1f8: 88 e3 ldi r24, 0x38 ; 56
1fa: e1 df rcall .-62 ; 0x1be
1fc: 85 e0 ldi r24, 0x05 ; 5
1fe: 90 e0 ldi r25, 0x00 ; 0
200: 2b df rcall .-426 ; 0x58
202: 60 e0 ldi r22, 0x00 ; 0
204: 88 e3 ldi r24, 0x38 ; 56
206: db df rcall .-74 ; 0x1be
208: 85 e0 ldi r24, 0x05 ; 5
20a: 90 e0 ldi r25, 0x00 ; 0
20c: 25 df rcall .-438 ; 0x58
20e: 61 e0 ldi r22, 0x01 ; 1
210: 8c e0 ldi r24, 0x0C ; 12
212: d5 df rcall .-86 ; 0x1be
214: 85 e0 ldi r24, 0x05 ; 5
216: 90 e0 ldi r25, 0x00 ; 0
218: 1f df rcall .-450 ; 0x58
21a: 61 e0 ldi r22, 0x01 ; 1
21c: 86 e0 ldi r24, 0x06 ; 6
21e: cf df rcall .-98 ; 0x1be
220: 85 e0 ldi r24, 0x05 ; 5
222: 90 e0 ldi r25, 0x00 ; 0
224: 19 df rcall .-462 ; 0x58
226: 61 e0 ldi r22, 0x01 ; 1
228: 86 2f mov r24, r22
22a: c9 df rcall .-110 ; 0x1be
22c: 85 e0 ldi r24, 0x05 ; 5
22e: 90 e0 ldi r25, 0x00 ; 0
230: 13 df rcall .-474 ; 0x58
232: 08 95 ret
00000234 <lcd_wdat>:
234: 1f 93 push r17
236: 18 2f mov r17, r24
238: b9 df rcall .-142 ; 0x1ac
23a: a8 9a sbi 0x15, 0 ; 21
23c: a9 98 cbi 0x15, 1 ; 21
23e: aa 98 cbi 0x15, 2 ; 21
240: 1b bb out 0x1b, r17 ; 27
242: aa 9a sbi 0x15, 2 ; 21
244: 00 00 nop
246: 00 00 nop
248: aa 98 cbi 0x15, 2 ; 21
24a: 1f 91 pop r17
24c: 08 95 ret
0000024e <lcd_pos>:
}
/*************************************************************/
/* */
/* 設(shè)定顯示位置 */
/* */
/*************************************************************/
void lcd_pos(uchar pos)
{
lcd_wcmd(pos|0x80,1); //數(shù)據(jù)指針=80+地址變量
24e: 61 e0 ldi r22, 0x01 ; 1
250: 80 68 ori r24, 0x80 ; 128
252: b5 df rcall .-150 ; 0x1be
254: 08 95 ret
00000256 <writetab>:
}
/*******************************************************************/
/* */
/*自定義字符寫入CGRAM */
/* */
/*******************************************************************/
void writetab(void)
{
256: 0f 93 push r16
258: 1f 93 push r17
25a: cf 93 push r28
uchar i;
lcd_wcmd(0x40,1); //寫CGRAM
25c: 61 e0 ldi r22, 0x01 ; 1
25e: 80 e4 ldi r24, 0x40 ; 64
260: ae df rcall .-164 ; 0x1be
262: 04 eb ldi r16, 0xB4 ; 180
264: 10 e0 ldi r17, 0x00 ; 0
266: c7 e0 ldi r28, 0x07 ; 7
for (i = 0; i< 8; i++)
lcd_wdat(mytab[i]);
268: f8 01 movw r30, r16
26a: 81 91 ld r24, Z+
26c: 8f 01 movw r16, r30
26e: e2 df rcall .-60 ; 0x234
270: c1 50 subi r28, 0x01 ; 1
272: c7 ff sbrs r28, 7
274: f9 cf rjmp .-14 ; 0x268
276: cf 91 pop r28
278: 1f 91 pop r17
27a: 0f 91 pop r16
27c: 08 95 ret
0000027e <Ok_Menu>:
}
/*******************************************************************/
/* */
/* DS18B20 OK 顯示菜單 */
/* */
/*******************************************************************/
void Ok_Menu (void)
{
27e: cf 93 push r28
uchar m;
lcd_init(); //初始化LCD
280: ac df rcall .-168 ; 0x1da
lcd_pos(0); //設(shè)置顯示位置為第一行的第1個字符
282: 80 e0 ldi r24, 0x00 ; 0
284: e4 df rcall .-56 ; 0x24e
m = 0;
286: c0 e0 ldi r28, 0x00 ; 0
while(cdis1[m] != '\0')
{ //顯示字符
lcd_wdat(cdis1[m]);
m++;
288: 80 91 93 00 lds r24, 0x0093
28c: 88 23 and r24, r24
28e: 69 f0 breq .+26 ; 0x2aa
290: ec 2f mov r30, r28
292: ff 27 eor r31, r31
294: ed 56 subi r30, 0x6D ; 109
296: ff 4f sbci r31, 0xFF ; 255
298: 80 81 ld r24, Z
29a: cc df rcall .-104 ; 0x234
29c: cf 5f subi r28, 0xFF ; 255
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -