#include "ai8051u.h" // 调用头文件#include <stdio.h>
#include <stdlib.h>
#include <time.h>void Timer0_Init(void) // 1毫秒@24MHz
{AUXR |= 0x80; // 定时器时钟1T模式TMOD &= 0xF0; // 设置定时器模式(高4位保留)TL0 = 0x40; // 设置定时初始值(低字节)TH0 = 0xA2; // 设置定时初始值(高字节)TF0 = 0; // 清除TF0标志TR0 = 1; // 启动定时器0
}// 简单的延时函数(假设系统时钟为24MHz)
void delay(unsigned int ms)
{unsigned int i, j;for(i = ms; i > 0; i--)for(j = 110; j > 0; j--); // 大约1ms延时
}//void delay_ms(u8 ms)
//{
// u16 i;
// do{
// i = MAIN_Fosc / 6000;
// while(--i);
// }while(--ms);
//}// 主函数
int main(void)
{// 初始化数组x和yint x[] = {0,1,2,3,4,5,6,7};int y[] = {0,1};int size_x = sizeof(x)/sizeof(x[0]);int size_y = sizeof(y)/sizeof(y[0]);// 生成所有可能的(x, y)组合int total_combinations = size_x * size_y;int combinations[total_combinations][2];int index = 0;for(int i = 0; i < size_x; i++) {for(int j = 0; j < size_y; j++) {combinations[index][0] = x[i];combinations[index][1] = y[j];index++;}}// 初始化随机数种子srand(time(NULL));// 随机选择一个组合int random_index = rand() % total_combinations;printf("随机选择的组合是: (%d, %d)", combinations[random_index][0], combinations[random_index][1]);return 0;// 配置P2端口为准双向口P2M0 = 0;P2M1 = 0;// 初始化定时器0Timer0_Init();while(1){x=[0,1,2,3,4,5,6,7]y=[0,1]P2x = 0; // P27端口输出低电平P20 = 0; // P20端口输出低电平 delay(5000); // 延时100msP27 = 1;P20 = 1; P21 = 0; // P21端口输出低电平P26 = 0; // P26端口输出低电平delay(5000); // 延时100msP21 = 1;P26 = 1;P22 = 0; // P22端口输出低电平P25 = 0; // P25端口输出低电平delay(5000); // 延时100msP22 = 1;P25 = 1;P23 = 0; // P23端口输出低电平P24 = 0; // P24端口输出低电平delay(5000); // 延时100msP23 = 1;P24 = 1; delay(5000); // 延时100ms}return 0; // 返回0表示程序正常结束
}