- 打卡等级:以坛为家III
- 打卡总天数:610
- 最近打卡:2025-07-30 00:03:00
论坛元老
- 积分
- 5782
|
发表于 2025-7-10 17:16:35
|
显示全部楼层
不要用P12 = !P12;,要用这个P12 = ~P12;。
1 #include "AI8051U.h"
2 #include "stdio.h"
3 #include "intrins.h"
4
5 typedef unsigned char u8;
6 typedef unsigned int u16;
7 typedef unsigned long u32;
8
9 #define MAIN_Fosc 24000000UL
10
11 void main(void)
12 {
13 1 WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
14 1 EAXFR = 1; //扩展寄存器(XFR)访问使能
15 1 CKCON = 0; //提高访问XRAM速度
16 1
17 1 P0M1 = 0x00; P0M0 = 0xff; //设置为推挽输出
18 1 P1M1 = 0x00; P1M0 = 0xff; //设置为推挽输出
19 1 P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
20 1 P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
21 1 P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
22 1 P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
23 1 P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口
24 1 P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
25 1
26 1 P1M0 = 0x80; P1M1 = 0x00;
27 1 // P1SR = 0x7f;
28 1
29 1
30 1 while(1)
31 1 {
32 2 P16 = ~P16;
33 2 P17 = ~P17;
34 2 P15 = !P15;
35 2 // P17 = 0;
36 2 // P17 = 1;
37 2 }
38 1 }
39
40
41
42
; FUNCTION main (BEGIN)
; SOURCE LINE # 11
000000 120000 R LCALL _m
000003 6D33 XRL WR6,WR6
000005 7E240000 R MOV WR4,#WORD0 ?SC_0000
000009 020000 E LJMP sprintf
; FUNCTION main (END)
; FUNCTION _m (BEGIN)
; SOURCE LINE # 11
; SOURCE LINE # 13
000000 75E900 MOV WTST,#00H
; SOURCE LINE # 14
000003 A9D7BA SETB EAXFR
; SOURCE LINE # 15
000006 75EA00 MOV CKCON,#00H
; SOURCE LINE # 17
000009 759300 MOV P0M1,#00H
00000C 7594FF MOV P0M0,#0FFH
; SOURCE LINE # 18
00000F 759100 MOV P1M1,#00H
000012 7592FF MOV P1M0,#0FFH
; SOURCE LINE # 19
000015 759500 MOV P2M1,#00H
000018 759600 MOV P2M0,#00H
; SOURCE LINE # 20
00001B 75B100 MOV P3M1,#00H
00001E 75B200 MOV P3M0,#00H
; SOURCE LINE # 21
000021 75B300 MOV P4M1,#00H
000024 75B400 MOV P4M0,#00H
; SOURCE LINE # 22
000027 75C900 MOV P5M1,#00H
00002A 75CA00 MOV P5M0,#00H
; SOURCE LINE # 23
00002D 75CB00 MOV P6M1,#00H
000030 75CC00 MOV P6M0,#00H
; SOURCE LINE # 24
000033 75E100 MOV P7M1,#00H
000036 75E200 MOV P7M0,#00H
; SOURCE LINE # 26
000039 759280 MOV P1M0,#080H
00003C 759100 MOV P1M1,#00H
; SOURCE LINE # 30
?C0003:
; SOURCE LINE # 32
00003F B296 CPL P16 ; 用这个P16 = ~P16; 只有汇编的一行代码。
; SOURCE LINE # 33
000041 B297 CPL P17
; SOURCE LINE # 34
000043 209503 JB P15,?C0005 ;用P15 = !P15; 会有好多行的汇编代码。
000046 D3 SETB C
000047 8001 SJMP ?C0006
?C0005:
000049 C3 CLR C
?C0006:
00004A 9295 MOV P15,C
; SOURCE LINE # 37
00004C 80F1 SJMP ?C0003
; FUNCTION _m (END)
|
|